Ian Campbell wrote:
I think gfx_passthrough is actually a boolean, right? In that case it
should be declared as "bool" in the idl.
Well, the integer value of gfx_passthru had meaning in 2009, I suspect.
It differentiated between IGD adapter and discrete adapter.
http://xen.1045712.n5.nabble.com/PATCH-0-2-v2-graphics-passthrough-with-VT-d-td2534811.html
At now, I didn't notice integer meaning of this variable in the code. I
changed it to bool in the new patch.
Sergey.
commit 258e2a6cbccea92bd4d11cbe15963f139e8810cc
Author: Sergey Tovpeko <tovpeko@xxxxxxxxx>
Date: Fri Jul 9 20:33:39 2010 +0400
Pass gfx_passthru option to the device_model.
To enable gfx passthru, xl should parse 'gfx_passthru' parameter from
config file, and pass it to qemu-dm.
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 2c3fb0f..c630193 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1208,6 +1208,11 @@ static char **
libxl_build_device_model_args_old(libxl__gc *gc,
flexarray_set(dm_args, num++, "-vcpu_avail");
flexarray_set(dm_args, num++, libxl__sprintf(gc, "0x%x",
info->vcpu_avail));
}
+ if (info->gfx_passthru) {
+ flexarray_set(dm_args, num++, "-gfx_passthru");
+ flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d",
info->gfx_passthru));
+ }
+
for (i = 0; i < num_vifs; i++) {
if (vifs[i].nictype == NICTYPE_IOEMU) {
char *smac = libxl__sprintf(gc,
"%02x:%02x:%02x:%02x:%02x:%02x",
diff --git a/tools/libxl/libxl.idl b/tools/libxl/libxl.idl
index 81fcfd9..8059328 100644
--- a/tools/libxl/libxl.idl
+++ b/tools/libxl/libxl.idl
@@ -96,6 +96,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
("disable_migrate", bool),
("kernel", libxl_file_reference),
("cpuid", libxl_cpuid_policy_list),
+ ("gfx_passthru", bool),
("hvm", integer),
("u", KeyedUnion(None, "hvm",
[("hvm", "%s", Struct(None,
@@ -161,6 +162,7 @@ libxl_device_model_info = Struct("device_model_info",[
("vcpu_avail", integer, False, "vcpus actually available"),
("xen_platform_pci", integer, False, "enable/disable the xen
platform pci device"),
("extra", libxl_string_list, False, "extra parameters pass
directly to qemu, NULL terminated"),
+ ("gfx_passthru", bool, False, "GFX passthrough enabled or
disabled"),
],
comment=
"""Device Model information.
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 1eace78..415b9b8 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -363,6 +363,7 @@ static void init_dm_info(libxl_device_model_info *dm_info,
dm_info->apic = b_info->u.hvm.apic;
dm_info->vcpus = b_info->max_vcpus;
dm_info->vcpu_avail = b_info->cur_vcpus;
+ dm_info->gfx_passthru = b_info->gfx_passthru;
dm_info->stdvga = 0;
dm_info->vnc = 1;
@@ -900,6 +901,9 @@ static void parse_config_data(const char
*configfile_filename_report,
xlu_cfg_replace_string (config, "kernel", &b_info->kernel.path);
+ if (!xlu_cfg_get_long (config, "gfx_passthru", &l))
+ b_info->gfx_passthru = l;
+
if (c_info->hvm == 1) {
if (!xlu_cfg_get_long (config, "pae", &l))
b_info->u.hvm.pae = l;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|