aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>2004-06-14 10:55:59 +0000
committermjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>2004-06-14 10:55:59 +0000
commit7415c3d1f67224daeda4bd3a5dec079c5ab54f6e (patch)
tree2d456b706f4be6170fea50afaad17d7cd54dccac
parent8b980d633cd157fdea71de4e8db397181fa4b678 (diff)
downloadxen-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/ignore132
-rw-r--r--linux-2.4.26-xen-sparse/arch/xen/kernel/ctrl_if.c19
-rw-r--r--tools/xend/lib/utils.c52
-rwxr-xr-xtools/xenmgr/lib/server/blkif.py2
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():