[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 6/6] xen kexec: reset device state to Initializing during reboot
On Tue, 26 Jul 2011, Olaf Hering wrote: > During kexec all devices will be shutdown, the backend drivers enter the > Closed state. But in this state the kexec kernel can not connect to the > backend because it expects the devices in InitWait state. > After triggering the Closing event, trigger also the Initializing event > and wait until the backend has changed its state. Without this waiting > the kexec kernel may find a device where a state change is still in > progress. > > Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> > --- > drivers/xen/xenbus/xenbus_probe.c | 23 +++++++++++++++++++++-- > 1 file changed, 21 insertions(+), 2 deletions(-) > > Index: linux-3.0/drivers/xen/xenbus/xenbus_probe.c > =================================================================== > --- linux-3.0.orig/drivers/xen/xenbus/xenbus_probe.c > +++ linux-3.0/drivers/xen/xenbus/xenbus_probe.c > @@ -192,8 +192,19 @@ void xenbus_otherend_changed(struct xenb > * work that can fail e.g., when the rootfs is gone. > */ > if (system_state > SYSTEM_RUNNING) { > - if (ignore_on_shutdown && (state == XenbusStateClosing)) > - xenbus_frontend_closed(dev); > + if (ignore_on_shutdown) { > + switch (state) { > + case XenbusStateClosing: > + xenbus_frontend_closed(dev); > + break; > + case XenbusStateInitialising: > + case XenbusStateInitWait: > + complete(&dev->down); > + break; > + default: > + break; > + } > + } > return; > } > > @@ -284,6 +295,14 @@ void xenbus_dev_shutdown(struct device * > if (!timeout) > printk(KERN_INFO "%s: %s timeout closing device\n", > __func__, dev->nodename); > + > + if (system_state > SYSTEM_RUNNING) { > + xenbus_switch_state(dev, XenbusStateInitialising); > + timeout = wait_for_completion_timeout(&dev->down, timeout); > + if (!timeout) > + printk(KERN_INFO "%s: %s timeout initializing device\n", > + __func__, dev->nodename); > + } > out: > put_device(&dev->dev); > } It looks like this code path is going to be triggered every time we shut down a PV on HVM guest. I think we should avoid going into XenbusStateInitialising on normal shut down or reboot. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |