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

Re: [Xen-devel] [PATCH 32 of 32 RFC] libxl: Default to stub device model whenever possible



On Mon, 2012-01-16 at 15:53 +0000, Stefano Stabellini wrote:
> On Mon, 16 Jan 2012, Ian Campbell wrote:
> > # HG changeset patch
> > # User Ian Campbell <ian.campbell@xxxxxxxxxx>
> > # Date 1326715929 0
> > # Node ID 953a1ce643856edcf9fbbbc2680690b3a26dede8
> > # Parent  a2dc899d0f229d82baca92a06b3b7a5b4d918324
> > libxl: Default to stub device model whenever possible.
> 
> Considering that stubdoms are not yet at feature parity I don't think we
> should make this change for 4.2.
> At the very least we should expand the set of conditions on which we base
> the decision on: certainly the presence of an audio device, maybe pci
> passthrough and the type of block backend (considering that some of them
> go through qemu now) in case they aren't working properly.

Tweaking the precise conditions is reasonable and indeed the main thrust
of the series is to allow to make this sort of determination and to
change our minds about it.

Disabling stub-dm in the face of an audio is a no brainer. PCI
passthrough less obviously so since itm in theory, works but given the
number of problems we've had with it I'm inclined to also gate on that.

Which leaves block devices which is an interesting one because currently
I don't have enough info in hand during
libxl__domain_build_info_setdefaults to make that determination. I shall
look at how I can resolve that.

Ian.

> 
> 
> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > 
> > diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_create.c
> > --- a/tools/libxl/libxl_create.c    Mon Jan 16 11:33:18 2012 +0000
> > +++ b/tools/libxl/libxl_create.c    Mon Jan 16 12:12:09 2012 +0000
> > @@ -94,7 +94,20 @@ int libxl__domain_build_info_setdefaults
> >          b_info->device_model_version =
> >              LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL;
> >  
> > -    libxl_defbool_setdefault(&b_info->device_model_stubdomain, false);
> > +    /* Default to stub domain device model if possible */
> > +    if (b_info->type == LIBXL_DOMAIN_TYPE_HVM
> > +        && b_info->device_model_version
> > +        == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL
> > +        && access(libxl__stubdom_kernel(gc), R_OK) == 0) {
> > +        libxl_defbool_setdefault(&b_info->device_model_stubdomain, true);
> > +    } else {
> > +        libxl_defbool_setdefault(&b_info->device_model_stubdomain, false);
> > +    }
> > +
> > +    if (b_info->device_model_version !=
> > +        LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL &&
> > +        libxl_defbool_val(b_info->device_model_stubdomain))
> > +        return ERROR_INVAL;
> >  
> >      if (!b_info->max_vcpus)
> >          b_info->max_vcpus = 1;
> > diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_dm.c
> > --- a/tools/libxl/libxl_dm.c        Mon Jan 16 11:33:18 2012 +0000
> > +++ b/tools/libxl/libxl_dm.c        Mon Jan 16 12:12:09 2012 +0000
> > @@ -686,6 +686,11 @@ retry_transaction:
> >      return 0;
> >  }
> >  
> > +char *libxl__stubdom_kernel(libxl__gc *gc)
> > +{
> > +    return libxl__abs_path(gc, "ioemu-stubdom.gz", 
> > libxl_xenfirmwaredir_path());
> > +}
> > +
> >  static int libxl__create_stubdom(libxl__gc *gc,
> >                                   int guest_domid,
> >                                   libxl_domain_config *guest_config,
> > @@ -729,8 +734,7 @@ static int libxl__create_stubdom(libxl__
> >      dm_config.b_info.target_memkb = dm_config.b_info.max_memkb;
> >  
> >      dm_config.b_info.type = LIBXL_DOMAIN_TYPE_PV;
> > -    dm_config.b_info.u.pv.kernel.path = libxl__abs_path(gc, 
> > "ioemu-stubdom.gz",
> > -                                              libxl_xenfirmwaredir_path());
> > +    dm_config.b_info.u.pv.kernel.path = libxl__stubdom_kernel(gc);
> >      dm_config.b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", 
> > guest_domid);
> >      dm_config.b_info.u.pv.ramdisk.path = "";
> >      dm_config.b_info.u.pv.features = "";
> > diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_internal.h
> > --- a/tools/libxl/libxl_internal.h  Mon Jan 16 11:33:18 2012 +0000
> > +++ b/tools/libxl/libxl_internal.h  Mon Jan 16 12:12:09 2012 +0000
> > @@ -482,6 +482,8 @@ _hidden int libxl__create_device_model(l
> >                                libxl_domain_config *guest_config,
> >                                libxl__domain_build_state *state,
> >                                libxl__spawner_starting **starting_r);
> > +_hidden char *libxl__stubdom_kernel(libxl__gc *gc);
> > +
> >  _hidden int libxl__create_xenpv_qemu(libxl__gc *gc, uint32_t domid,
> >                                libxl_domain_config *guest_config,
> >                                libxl__domain_build_state *state,
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> > 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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