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

Re: [Xen-devel] xl and GFX passthrough


  • To: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
  • From: Sergey Tovpeko <tsv.devel@xxxxxxxxx>
  • Date: Thu, 13 Jan 2011 13:05:14 +0300
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 13 Jan 2011 02:11:36 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type; b=i49L9tpcEZDK3Z8M0FbN4Fg+eeBCe4gUCgG8FeEnYWwEHspL9EFkLlFqG3dsB0Oh8V QDIai0oP07wtOMEuqvITfze8obl0pqqYCf/tY0LGnxKX9CZKhgo3wudNAyIG8nAqcIY8 NyKce/M4qlJaUe7syn8ohM0kSLBXLOiKtYicc=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

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

 


Rackspace

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