bitkeeper revision 1.946.1.4 (40cd843f6NSyFYPvGTRmyXVfcuiXHw)
authormjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Mon, 14 Jun 2004 10:55:59 +0000 (10:55 +0000)
committermjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Mon, 14 Jun 2004 10:55:59 +0000 (10:55 +0000)
Support xend restart by reconnecting the control interface.

BitKeeper/etc/ignore
linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c
tools/xend/lib/utils.c
tools/xenmgr/lib/server/blkif.py

index f9801219a3010600ebd0f244762a344ab1ecf1fe..1a7e7aea9eb817a4a1fde828ebad36f05cad169f 100644 (file)
@@ -25,132 +25,6 @@ xen/include/xen/compile.h
 xen/tools/elf-reloc
 xen/tools/figlet/figlet
 TAGS
-linux-2.4.26-xen-sparse/drivers/scsi/aic7xxx/Makefile~
-linux-2.4.26-xen/.config.old
-linux-2.4.26-xen/.depend
-linux-2.4.26-xen/.hdepend
-linux-2.4.26-xen/.version
-linux-2.4.26-xen/.config
-linux-2.4.26-xen/COPYING
-linux-2.4.26-xen/CREDITS
-linux-2.4.26-xen/Documentation/00-INDEX
-linux-2.4.26-xen/Documentation/BK-usage/00-INDEX
-linux-2.4.26-xen/Documentation/BK-usage/bk-kernel-howto.txt
-linux-2.4.26-xen/Documentation/BK-usage/bk-make-sum
-linux-2.4.26-xen/Documentation/BK-usage/bksend
-linux-2.4.26-xen/Documentation/BK-usage/bz64wrap
-linux-2.4.26-xen/Documentation/BK-usage/cset-to-linus
-linux-2.4.26-xen/Documentation/BK-usage/csets-to-patches
-linux-2.4.26-xen/Documentation/BK-usage/unbz64wrap
-linux-2.4.26-xen/Documentation/BUG-HUNTING
-linux-2.4.26-xen/Documentation/Changes
-linux-2.4.26-xen/Documentation/CodingStyle
-linux-2.4.26-xen/Documentation/Configure.help
-linux-2.4.26-xen/Documentation/DMA-mapping.txt
-linux-2.4.26-xen/Documentation/DocBook/Makefile
-linux-2.4.26-xen/Documentation/DocBook/deviceiobook.tmpl
-linux-2.4.26-xen/Documentation/DocBook/journal-api.tmpl
-linux-2.4.26-xen/Documentation/DocBook/kernel-api.tmpl
-linux-2.4.26-xen/Documentation/DocBook/kernel-hacking.tmpl
-linux-2.4.26-xen/Documentation/DocBook/kernel-locking.tmpl
-linux-2.4.26-xen/Documentation/DocBook/mcabook.tmpl
-linux-2.4.26-xen/Documentation/DocBook/mousedrivers.tmpl
-linux-2.4.26-xen/Documentation/DocBook/parport-multi.fig
-linux-2.4.26-xen/Documentation/DocBook/parport-share.fig
-linux-2.4.26-xen/Documentation/DocBook/parport-structure.fig
-linux-2.4.26-xen/Documentation/DocBook/parportbook.tmpl
-linux-2.4.26-xen/Documentation/DocBook/procfs-guide.tmpl
-linux-2.4.26-xen/Documentation/DocBook/procfs_example.c
-linux-2.4.26-xen/Documentation/DocBook/sis900.tmpl
-linux-2.4.26-xen/Documentation/DocBook/tulip-user.tmpl
-linux-2.4.26-xen/Documentation/DocBook/via-audio.tmpl
-linux-2.4.26-xen/Documentation/DocBook/videobook.tmpl
-linux-2.4.26-xen/Documentation/DocBook/wanbook.tmpl
-linux-2.4.26-xen/Documentation/DocBook/z8530book.tmpl
-linux-2.4.26-xen/Documentation/IO-mapping.txt
-linux-2.4.26-xen/Documentation/IPMI.txt
-linux-2.4.26-xen/Documentation/IRQ-affinity.txt
-linux-2.4.26-xen/Documentation/LVM-HOWTO
-linux-2.4.26-xen/Documentation/README.DAC960
-linux-2.4.26-xen/Documentation/README.moxa
-linux-2.4.26-xen/Documentation/README.nsp32_cb.eng
-linux-2.4.26-xen/Documentation/README.nsp_cs.eng
-linux-2.4.26-xen/Documentation/SAK.txt
-linux-2.4.26-xen/Documentation/SubmittingDrivers
-linux-2.4.26-xen/Documentation/SubmittingPatches
-linux-2.4.26-xen/Documentation/VGA-softcursor.txt
-linux-2.4.26-xen/Documentation/arm/Booting
-linux-2.4.26-xen/Documentation/arm/ConfigVars
-linux-2.4.26-xen/Documentation/arm/MEMC
-linux-2.4.26-xen/Documentation/arm/Netwinder
-linux-2.4.26-xen/Documentation/arm/README
-linux-2.4.26-xen/Documentation/arm/SA1100/ADSBitsy
-linux-2.4.26-xen/Documentation/arm/SA1100/Assabet
-linux-2.4.26-xen/Documentation/arm/SA1100/Brutus
-linux-2.4.26-xen/Documentation/arm/SA1100/CERF
-linux-2.4.26-xen/Documentation/arm/SA1100/DMA
-linux-2.4.26-xen/Documentation/arm/SA1100/FreeBird
-linux-2.4.26-xen/Documentation/arm/SA1100/GraphicsClient
-linux-2.4.26-xen/Documentation/arm/SA1100/GraphicsMaster
-linux-2.4.26-xen/Documentation/arm/SA1100/HUW_WEBPANEL
-linux-2.4.26-xen/Documentation/arm/SA1100/Itsy
-linux-2.4.26-xen/Documentation/arm/SA1100/LART
-linux-2.4.26-xen/Documentation/arm/SA1100/PCMCIA
-linux-2.4.26-xen/Documentation/arm/SA1100/PLEB
-linux-2.4.26-xen/Documentation/arm/SA1100/Pangolin
-linux-2.4.26-xen/Documentation/arm/SA1100/SA1100_USB
-linux-2.4.26-xen/Documentation/arm/SA1100/Tifon
-linux-2.4.26-xen/Documentation/arm/SA1100/Victor
-linux-2.4.26-xen/Documentation/arm/SA1100/Yopy
-linux-2.4.26-xen/Documentation/arm/SA1100/empeg
-linux-2.4.26-xen/Documentation/arm/SA1100/nanoEngine
-linux-2.4.26-xen/Documentation/arm/SA1100/serial_UART
-linux-2.4.26-xen/Documentation/arm/Setup
-linux-2.4.26-xen/Documentation/arm/empeg/README
-linux-2.4.26-xen/Documentation/arm/empeg/ir.txt
-linux-2.4.26-xen/Documentation/arm/empeg/mkdevs
-linux-2.4.26-xen/Documentation/arm/nwfpe/NOTES
-linux-2.4.26-xen/Documentation/arm/nwfpe/README
-linux-2.4.26-xen/Documentation/arm/nwfpe/README.FPE
-linux-2.4.26-xen/Documentation/arm/nwfpe/TODO
-linux-2.4.26-xen/Documentation/binfmt_misc.txt
-linux-2.4.26-xen/Documentation/cachetlb.txt
-linux-2.4.26-xen/Documentation/cciss.txt
-linux-2.4.26-xen/Documentation/cdrom/00-INDEX
-linux-2.4.26-xen/Documentation/cdrom/Makefile
-linux-2.4.26-xen/Documentation/cdrom/aztcd
-linux-2.4.26-xen/Documentation/cdrom/cdrom-standard.tex
-linux-2.4.26-xen/Documentation/cdrom/cdu31a
-linux-2.4.26-xen/Documentation/cdrom/cm206
-linux-2.4.26-xen/Documentation/cdrom/gscd
-linux-2.4.26-xen/Documentation/cdrom/ide-cd
-linux-2.4.26-xen/Documentation/cdrom/isp16
-linux-2.4.26-xen/Documentation/cdrom/mcd
-linux-2.4.26-xen/Documentation/cdrom/mcdx
-linux-2.4.26-xen/Documentation/cdrom/optcd
-linux-2.4.26-xen/Documentation/cdrom/sbpcd
-linux-2.4.26-xen/Documentation/cdrom/sjcd
-linux-2.4.26-xen/Documentation/cdrom/sonycd535
-linux-2.4.26-xen/Documentation/computone.txt
-linux-2.4.26-xen/Documentation/cpqarray.txt
-linux-2.4.26-xen/Documentation/cris/README
-linux-2.4.26-xen/Documentation/crypto/api-intro.txt
-linux-2.4.26-xen/Documentation/crypto/descore-readme.txt
-linux-2.4.26-xen/Documentation/devices.txt
-linux-2.4.26-xen/Documentation/digiboard.txt
-linux-2.4.26-xen/Documentation/digiepca.txt
-linux-2.4.26-xen/Documentation/dnotify.txt
-linux-2.4.26-xen/Documentation/exception.txt
-linux-2.4.26-xen/Documentation/fb/00-INDEX
-linux-2.4.26-xen/Documentation/fb/README-sstfb.txt
-linux-2.4.26-xen/Documentation/fb/aty128fb.txt
-linux-2.4.26-xen/Documentation/fb/clgenfb.txt
-linux-2.4.26-xen/Documentation/fb/framebuffer.txt
-linux-2.4.26-xen/Documentation/fb/internals.txt
-linux-2.4.26-xen/Documentation/fb/matroxfb.txt
-linux-2.4.26-xen/Documentation/fb/modedb.txt
-linux-2.4.26-xen/Documentation/fb/pvr2fb.txt
-linux-2.4.26-xen/Documentation/fb/sa1100fb.txt
-tools/xenmgr/lib/server/blkif.py~
-tools/xenmgr/lib/server/messages.py~
-tools/xenmgr/lib/server/netif.py~
+linux-2.4.26-xen/*
+*~
+tools/xend-2004-06-10_1309.tgz
index 19cb9a33260b231b7b4251e8b13c542a862df74d..0e6389406ca61784b3dde1b9ef7dba69f38b8eda 100644 (file)
@@ -330,6 +330,19 @@ void ctrl_if_suspend(void)
     unbind_evtchn_from_irq(ctrl_if_evtchn);
 }
 
+/** Reset the control interface progress pointers.
+ * Marks the queues empty if 'clear' non-zero.
+ */
+void ctrl_if_reset(int clear){
+    control_if_t *ctrl_if = get_ctrl_if();
+
+    if(clear){
+        *ctrl_if = (control_if_t){};
+    }
+    ctrl_if_tx_resp_cons = ctrl_if->tx_resp_prod;
+    ctrl_if_rx_req_cons  = ctrl_if->rx_resp_prod;
+}
+
 void ctrl_if_resume(void)
 {
     if ( start_info.flags & SIF_INITDOMAIN )
@@ -349,8 +362,7 @@ void ctrl_if_resume(void)
         initdom_ctrlif_domcontroller_port   = op.u.bind_interdomain.port2;
     }
 
-    ctrl_if_tx_resp_cons = 0;
-    ctrl_if_rx_req_cons  = 0;
+    ctrl_if_reset(0);
 
     ctrl_if_evtchn = start_info.domain_controller_evtchn;
     ctrl_if_irq    = bind_evtchn_to_irq(ctrl_if_evtchn);
@@ -365,7 +377,7 @@ void ctrl_if_resume(void)
 
 void __init ctrl_if_init(void)
 {
-    int i;
+        int i;
 
     for ( i = 0; i < 256; i++ )
         ctrl_if_rxmsg_handler[i] = ctrl_if_rxmsg_default_handler;
@@ -373,6 +385,7 @@ void __init ctrl_if_init(void)
 
     spin_lock_init(&ctrl_if_lock);
 
+    ctrl_if_reset(1);
     ctrl_if_resume();
 }
 
index 903bb9c27493c8e91383b52494274b93f213acbf..ba38e065b42f73f614f62bc3cf363998b8a8ce1a 100644 (file)
@@ -670,7 +670,7 @@ static void unmap_control_interface(int fd, control_if_t *c)
     (void)munmap(vaddr, PAGE_SIZE);
 }
 
-typedef struct {
+typedef struct xu_port_object {
     PyObject_HEAD;
     int mem_fd;
     int xc_handle;
@@ -683,6 +683,42 @@ typedef struct {
 
 static PyObject *port_error;
 
+static int xup_connect(xu_port_object *xup, domid_t dom,
+                       int local_port, int remote_port){
+    // From our prespective rx = producer, tx = consumer.
+    int err = 0;
+    printf("%s> dom=%u %d:%d\n", __FUNCTION__, dom, local_port, remote_port);
+
+    // Consumer = tx.
+    //xup->interface->tx_resp_prod = 0;
+    //xup->interface->tx_req_prod = 0;
+    xup->tx_resp_prod = xup->interface->tx_resp_prod;
+    xup->tx_req_cons = xup->interface->tx_resp_prod;
+    printf("%s> tx: %p %p : %p %p\n", __FUNCTION__,
+           xup->interface->tx_resp_prod,
+           xup->tx_resp_prod,
+           xup->tx_req_cons,
+           xup->interface->tx_req_prod);
+
+    // Producer = rx.
+    //xup->interface->rx_req_prod  = 0;
+    //xup->interface->rx_resp_prod = 0;
+    xup->rx_req_prod  = xup->interface->rx_req_prod;
+    xup->rx_resp_cons = xup->interface->rx_resp_prod;
+    printf("%s> rx: %p %p : %p %p\n", __FUNCTION__,
+           xup->rx_resp_cons,
+           xup->interface->rx_resp_prod,
+           xup->interface->rx_req_prod,
+           xup->rx_req_prod);
+
+    xup->remote_dom   = dom;
+    xup->local_port   = local_port;
+    xup->remote_port  = remote_port;
+
+    printf("%s< err=%d\n", __FUNCTION__, err);
+    return err;
+}
+
 static PyObject *xu_port_notify(PyObject *self, PyObject *args)
 {
     xu_port_object *xup = (xu_port_object *)self;
@@ -988,19 +1024,7 @@ static PyObject *xu_port_new(PyObject *self, PyObject *args)
         goto fail4;
     }
 
-    xup->interface->tx_resp_prod = 0;
-    xup->interface->rx_req_prod  = 0;
-    xup->interface->tx_req_prod = 0;
-    xup->interface->rx_resp_prod = 0;
-
-    xup->tx_req_cons  = 0;
-    xup->tx_resp_prod = 0;
-    xup->rx_req_prod  = 0;
-    xup->rx_resp_cons = 0;
-    xup->remote_dom   = dom;
-    xup->local_port   = port1;
-    xup->remote_port  = port2;
-
+    xup_connect(xup, dom, port1, port2);
     return (PyObject *)xup;
 
     
index 0ef8ff0ff369e8a3bb57170d3e9bedf4980e1353..5c533f82cf90e21e567538d9082afc47720795b9 100755 (executable)
@@ -98,7 +98,7 @@ class BlkifControllerFactory(controller.ControllerFactory):
             blkif.reattached()
 
     def recv_be_driver_status_changed(self, msg, req):
-        val = unpackMsg('blkif_be_driver_status_changed_t'. msg)
+        val = unpackMsg('blkif_be_driver_status_changed_t', msg)
         status = val['status']
         if status == BLKIF_DRIVER_STATUS_UP and not self.attached:
             for blkif in self.getInstances():