[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v11 01/17] libxl: fix stubdom console destruction



On Tue, 24 Jul 2012, Roger Pau Monne wrote:
> Ian Campbell wrote:
> > On Mon, 2012-07-23 at 18:27 +0100, Roger Pau Monne wrote:
> >> Stubdoms have several consoles attached, and they don't follow the
> >> xenstore protocol for devices, since they are always in state 1. We
> >> have to add an exception to libxl__initiate_device_remove, so libxl
> >> doesn't wait for them to reach state 6 (Closed).
> >>
> >> Report: http://markmail.org/message/yqgppcsdip6tnmh6
> >>
> >> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> >> Reported-by: Ian Campbell <ian.campbell@xxxxxxxxxxxxx>
> >> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxx>
> >> ---
> >>  tools/libxl/libxl_device.c |    6 ++++--
> >>  1 files changed, 4 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> >> index a94beab..c4392fa 100644
> >> --- a/tools/libxl/libxl_device.c
> >> +++ b/tools/libxl/libxl_device.c
> >> @@ -592,8 +592,10 @@ void libxl__initiate_device_remove(libxl__egc *egc,
> >>          LOG(ERROR, "unable to get info for domain %d", domid);
> >>          goto out;
> >>      }
> >> -    if (QEMU_BACKEND(aodev->dev) &&
> >> -        (info.paused || info.dying || info.shutdown)) {
> >> +    if ((QEMU_BACKEND(aodev->dev) &&
> >> +        (info.paused || info.dying || info.shutdown)) ||
> >> +        (libxl_is_stubdom(CTX, aodev->dev->domid, NULL) &&
> >> +        (aodev->dev->backend_kind == LIBXL__DEVICE_KIND_CONSOLE))) {
> > 
> > Is this actually specific to stubdom consoles or is that just where
> > we've noticed it?
> 
> It's just that I've noticed it with stubdoms, which AFAIK are the only
> domains that can have more than one console.

Linux can handle multiple PV consoles


> > Does it apply to LIBXL__CONSOLE_BACKEND_IOEMU as well
> > as ..._XENCONSOLED? I took a look through tools/console and I cannot
> > find any handling of a state node in xenstore at all, so the XENCONSOLED
> > case seems clear. I notice that xen_console.c registers the device with
> > DEVOPS_FLAG_IGNORE_STATE but that only seems to affect startup not
> > teardown. I don't see a qemu_chr_close (or anything similar) anywhere in
> > hw/xen_console.c
> 
> So it should apply to any console device? This means I don't have to
> wait for any device of type LIBXL__DEVICE_KIND_CONSOLE, and there's no
> need to check for the specific console type or Qemu.

xen_console registers a disconnect handler, con_disconnect, that should
be able to unbind the evtchn and unmap the ring.
"disconnect" is called by xen_backend, if the backend and frontend
states are 5 or 6.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.