From: Paul Durrant <paul.durrant@citrix.com>
To: xen-devel@lists.xen.org
Cc: Paul Durrant <paul.durrant@citrix.com>,
Stefano Stabellini <stefano.stabellini@citrix.com>
Subject: [PATCH] Add device_model_pvdevice parameter for HVM guests
Date: Thu, 4 Jul 2013 11:50:06 +0100 [thread overview]
Message-ID: <1372935006-32464-1-git-send-email-paul.durrant@citrix.com> (raw)
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>
---
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);
--
1.7.10.4
next reply other threads:[~2013-07-04 10:50 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-04 10:50 Paul Durrant [this message]
2013-07-11 8:22 ` [PATCH] Add device_model_pvdevice parameter for HVM guests Paul Durrant
2013-07-11 11:34 ` Stefano Stabellini
2013-07-11 17:58 ` Matt Wilson
2013-07-11 21:29 ` Stefano Stabellini
2013-07-12 7:57 ` Paul Durrant
2013-07-12 22:34 ` Matt Wilson
2013-07-18 10:54 ` Paul Durrant
2013-07-18 10:58 ` Ian Campbell
2013-07-18 11:16 ` Paul Durrant
2013-07-18 11:23 ` Ian Campbell
2013-07-18 11:00 ` Ian Jackson
2013-07-18 11:35 ` Paul Durrant
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1372935006-32464-1-git-send-email-paul.durrant@citrix.com \
--to=paul.durrant@citrix.com \
--cc=stefano.stabellini@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).