diff options
author | mjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com> | 2004-06-14 10:55:59 +0000 |
---|---|---|
committer | mjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com> | 2004-06-14 10:55:59 +0000 |
commit | 7415c3d1f67224daeda4bd3a5dec079c5ab54f6e (patch) | |
tree | 2d456b706f4be6170fea50afaad17d7cd54dccac | |
parent | 8b980d633cd157fdea71de4e8db397181fa4b678 (diff) | |
download | xen-7415c3d1f67224daeda4bd3a5dec079c5ab54f6e.tar.gz xen-7415c3d1f67224daeda4bd3a5dec079c5ab54f6e.tar.bz2 xen-7415c3d1f67224daeda4bd3a5dec079c5ab54f6e.zip |
bitkeeper revision 1.946.1.4 (40cd843f6NSyFYPvGTRmyXVfcuiXHw)
Support xend restart by reconnecting the control interface.
-rw-r--r-- | BitKeeper/etc/ignore | 132 | ||||
-rw-r--r-- | linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c | 19 | ||||
-rw-r--r-- | tools/xend/lib/utils.c | 52 | ||||
-rwxr-xr-x | tools/xenmgr/lib/server/blkif.py | 2 |
4 files changed, 58 insertions, 147 deletions
diff --git a/BitKeeper/etc/ignore b/BitKeeper/etc/ignore index f9801219a3..1a7e7aea9e 100644 --- a/BitKeeper/etc/ignore +++ b/BitKeeper/etc/ignore @@ -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 diff --git a/linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c b/linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c index 19cb9a3326..0e6389406c 100644 --- a/linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c +++ b/linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c @@ -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(); } diff --git a/tools/xend/lib/utils.c b/tools/xend/lib/utils.c index 903bb9c274..ba38e065b4 100644 --- a/tools/xend/lib/utils.c +++ b/tools/xend/lib/utils.c @@ -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; diff --git a/tools/xenmgr/lib/server/blkif.py b/tools/xenmgr/lib/server/blkif.py index 0ef8ff0ff3..5c533f82cf 100755 --- a/tools/xenmgr/lib/server/blkif.py +++ b/tools/xenmgr/lib/server/blkif.py @@ -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(): |