|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Add device_model_pvdevice parameter for HVM guests
On Thu, 11 Jul 2013, Matt Wilson wrote:
> On Thu, Jul 04, 2013 at 11:50:06AM +0100, Paul Durrant wrote:
> > The parameter determines which, if any, xen-pvdevice is specified on the
> > QEMU command line. The default value is 'none' which means no argument will
> > be passed. A value of 'xenserver' specifies a xen-pvdevice with device-id
> > 0xc000 (the initial value in the xenserver namespace - see
> > docs/misc/pci-device-reservations.txt).
>
> Why bake this into the toolset API? I don't like the idea of a toolset
> API change every time a new device ID is introduced by a PV driver.
>
> Can this be a free form text parameter instead?
Think of the users: although I am not against having a device ID based
interface, we should also expose something easier to use like a label
(like this patch does).
>
> > Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
> > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> > ---
> > docs/man/xl.cfg.pod.5 | 22 ++++++++++++++++++++++
> > tools/libxl/libxl_dm.c | 9 +++++++++
> > tools/libxl/libxl_types.idl | 5 +++++
> > tools/libxl/xl_cmdimpl.c | 14 ++++++++++++++
> > 4 files changed, 50 insertions(+)
> >
> > diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
> > index b7d64a6..2220bb6 100644
> > --- a/docs/man/xl.cfg.pod.5
> > +++ b/docs/man/xl.cfg.pod.5
> > @@ -1214,6 +1214,28 @@ you have selected.
> >
> > Assign an XSM security label to the device-model stubdomain.
> >
> > +=item B<device_model_pvdevice="PVDEVICE">
> > +
> > +Selects which variant of the xen-pvdevice should be used for this
> > +guest. Valid values are:
> > +
> > +=over 4
> > +
> > +=item B<none>
> > +
> > +The xen-pvdevice should be omitted. This is the default.
> > +
> > +=item B<xenserver>
> > +
> > +The xenserver variant of the xen-pvdevice will be specified, enabling
> > +the use of XenServer PV drivers in the guest.
> > +
> > +=back
> > +
> > +This parameter only takes effect when device_model_version=qemu-xen.
> > +
> > +=back
> > +
> > =item B<device_model_args=[ "ARG", "ARG", ...]>
> >
> > Pass additional arbitrary options on the device-model command
> > diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> > index ac1f90e..2924298 100644
> > --- a/tools/libxl/libxl_dm.c
> > +++ b/tools/libxl/libxl_dm.c
> > @@ -647,6 +647,15 @@ static char **
> > libxl__build_device_model_args_new(libxl__gc *gc,
> > flexarray_append(dm_args, "-drive");
> > flexarray_append(dm_args, drive);
> > }
> > +
> > + switch (b_info->u.hvm.device_model_pvdevice) {
> > + case LIBXL_DEVICE_MODEL_PVDEVICE_XENSERVER:
> > + flexarray_append(dm_args, "-device");
> > + flexarray_append(dm_args, "xen-pvdevice,device-id=0xc000");
> > + break;
> > + default:
> > + break;
> > + }
> > }
> > flexarray_append(dm_args, NULL);
> > return (char **) flexarray_contents(dm_args);
> > diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> > index d218a2d..7165139 100644
> > --- a/tools/libxl/libxl_types.idl
> > +++ b/tools/libxl/libxl_types.idl
> > @@ -132,6 +132,10 @@ libxl_vga_interface_type =
> > Enumeration("vga_interface_type", [
> > (2, "STD"),
> > ], init_val = 0)
> >
> > +libxl_device_model_pvdevice = Enumeration("device_model_pvdevice", [
> > + (0, "NONE"),
> > + (1, "XENSERVER"),
> > + ])
> > #
> > # Complex libxl types
> > #
> > @@ -332,6 +336,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
> > ("soundhw", string),
> > ("xen_platform_pci", libxl_defbool),
> > ("usbdevice_list",
> > libxl_string_list),
> > + ("device_model_pvdevice",
> > libxl_device_model_pvdevice),
> > ])),
> > ("pv", Struct(None, [("kernel", string),
> > ("slack_memkb", MemKB),
> > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> > index 8a478ba..cfaa54e 100644
> > --- a/tools/libxl/xl_cmdimpl.c
> > +++ b/tools/libxl/xl_cmdimpl.c
> > @@ -1526,6 +1526,20 @@ skip_vfb:
> > exit (1);
> >
> > }
> > +
> > + if (!xlu_cfg_get_string (config, "device_model_pvdevice", &buf,
> > 0)) {
> > + libxl_device_model_pvdevice d;
> > +
> > + e = libxl_device_model_pvdevice_from_string(buf, &d);
> > + if (e) {
> > + fprintf(stderr,
> > + "xl: unknown device_model_pvdevice '%s'\n",
> > + buf);
> > + exit(-ERROR_FAIL);
> > + }
> > +
> > + b_info->u.hvm.device_model_pvdevice = d;
> > + }
> > }
> >
> > xlu_cfg_destroy(config);
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |