* [PATCH v3] Add vendor_device parameter for HVM guests
@ 2013-08-02 16:45 Paul Durrant
2013-08-05 10:54 ` Ian Campbell
2013-09-04 15:53 ` Olaf Hering
0 siblings, 2 replies; 3+ messages in thread
From: Paul Durrant @ 2013-08-02 16:45 UTC (permalink / raw)
To: xen-devel; +Cc: Ian Jackson, Paul Durrant, Stefano Stabellini, Ian Campbell
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).
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Ian Jackson <ian.jackson@citrix.com>
---
v3:
- Changed names from using 'pvdevice' to 'vendor_device'
- Dropped 'device_model' prefix in xl.cfg parameter
- Adhere to general format of LIBXL_HAVE_ definitions
v2:
- Added LIBXL_HAVE_PVDEVICE to libxl.h
- Added more text to xl.cfg manpage to call out the device-id of
the xenserver pvdevice and point readers at
docs/misc/pci-device-reservations.txt
docs/man/xl.cfg.pod.5 | 23 +++++++++++++++++++++++
tools/libxl/libxl.h | 8 ++++++++
tools/libxl/libxl_dm.c | 9 +++++++++
tools/libxl/libxl_types.idl | 5 +++++
tools/libxl/xl_cmdimpl.c | 14 ++++++++++++++
5 files changed, 59 insertions(+)
diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
index 069b73f..08d6cc4 100644
--- a/docs/man/xl.cfg.pod.5
+++ b/docs/man/xl.cfg.pod.5
@@ -1176,6 +1176,29 @@ documentation.
=back
+=item B<vendor_device="VENDOR_DEVICE">
+
+Selects which variant of the QEMU 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 (device-id=C000) 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.
+See F<docs/misc/pci-device-reservations.txt> for more information.
+
+=back
+
=head2 Device-Model Options
The following options control the selection of the device-model. This
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 37e4d82..b9af2b1 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -82,6 +82,14 @@
#define LIBXL_HAVE_DOMAIN_NODEAFFINITY 1
/*
+ * LIBXL_HAVE_BUILD_INFO_HVM_VENDOR_DEVICE indicates that the
+ * libxl_vendor_device field is present in the hvm sections of
+ * libxl_domain_build_info. This field tells libxl which
+ * flavour of xen-pvdevice to enable in QEMU.
+ */
+#define LIBXL_HAVE_BUILD_INFO_HVM_VENDOR_DEVICE 1
+
+/*
* libxl ABI compatibility
*
* The only guarantee which libxl makes regarding ABI compatibility
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 7e54c02..615dcf3 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.vendor_device) {
+ case LIBXL_VENDOR_DEVICE_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..85341a0 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_vendor_device = Enumeration("vendor_device", [
+ (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),
+ ("vendor_device", libxl_vendor_device),
])),
("pv", Struct(None, [("kernel", string),
("slack_memkb", MemKB),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 5bef969..b583942 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1532,6 +1532,20 @@ skip_vfb:
exit (1);
}
+
+ if (!xlu_cfg_get_string (config, "vendor_device", &buf, 0)) {
+ libxl_vendor_device d;
+
+ e = libxl_vendor_device_from_string(buf, &d);
+ if (e) {
+ fprintf(stderr,
+ "xl: unknown vendor_device '%s'\n",
+ buf);
+ exit(-ERROR_FAIL);
+ }
+
+ b_info->u.hvm.vendor_device = d;
+ }
}
xlu_cfg_destroy(config);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v3] Add vendor_device parameter for HVM guests
2013-08-02 16:45 [PATCH v3] Add vendor_device parameter for HVM guests Paul Durrant
@ 2013-08-05 10:54 ` Ian Campbell
2013-09-04 15:53 ` Olaf Hering
1 sibling, 0 replies; 3+ messages in thread
From: Ian Campbell @ 2013-08-05 10:54 UTC (permalink / raw)
To: Paul Durrant; +Cc: Ian Jackson, Stefano Stabellini, xen-devel
On Fri, 2013-08-02 at 17:45 +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).
>
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> Cc: Stefano Stabellini <stefano.stabellini@citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Ian Jackson <ian.jackson@citrix.com>
Acked & applied with one small change:
> /*
> + * LIBXL_HAVE_BUILD_INFO_HVM_VENDOR_DEVICE indicates that the
> + * libxl_vendor_device field is present in the hvm sections of
> + * libxl_domain_build_info. This field tells libxl which
> + * flavour of xen-pvdevice to enable in QEMU.
> + */
> +#define LIBXL_HAVE_BUILD_INFO_HVM_VENDOR_DEVICE 1
For better or worse the existing example like this is BUILDINFO not
BUILD_INFO so I dropped the "_".
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] Add vendor_device parameter for HVM guests
2013-08-02 16:45 [PATCH v3] Add vendor_device parameter for HVM guests Paul Durrant
2013-08-05 10:54 ` Ian Campbell
@ 2013-09-04 15:53 ` Olaf Hering
1 sibling, 0 replies; 3+ messages in thread
From: Olaf Hering @ 2013-09-04 15:53 UTC (permalink / raw)
To: Paul Durrant; +Cc: Ian Jackson, Stefano Stabellini, Ian Campbell, xen-devel
On Fri, Aug 02, 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).
> diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
> index 069b73f..08d6cc4 100644
> --- a/docs/man/xl.cfg.pod.5
> +++ b/docs/man/xl.cfg.pod.5
> @@ -1176,6 +1176,29 @@ documentation.
>
> =back
>
> +=item B<vendor_device="VENDOR_DEVICE">
> +
> +Selects which variant of the QEMU 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 (device-id=C000) 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.
> +See F<docs/misc/pci-device-reservations.txt> for more information.
> +
> +=back
> +
> =head2 Device-Model Options
>
> The following options control the selection of the device-model. This
This change causes an error:
man/xl.cfg.pod.5 around line 1179: '=item' outside of any '=over'
POD document had syntax errors at /usr/bin/pod2text line 84.
make[2]: *** [txt/man/xl.cfg.5.txt] Error 255
Olaf
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-09-04 15:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-02 16:45 [PATCH v3] Add vendor_device parameter for HVM guests Paul Durrant
2013-08-05 10:54 ` Ian Campbell
2013-09-04 15:53 ` Olaf Hering
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).