]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libxl: fix framebuffer port setting for HVM domains
authorJim Fehlig <jfehlig@suse.com>
Mon, 17 Mar 2014 20:22:44 +0000 (14:22 -0600)
committerLaine Stump <laine@laine.org>
Mon, 5 May 2014 14:01:23 +0000 (17:01 +0300)
libxl uses the libxl_vnc_info and libxl_sdl_info fields from the
hvm union in libxl_domain_build_info struct when generating QEMU
args for VNC or SDL.  These fields were left unset by the libxl
driver, causing libxl to ignore any user settings.  E.g. with

  <graphics type='vnc' port='5950'/>

port would be ignored and QEMU would instead be invoked with

  -vnc 127.0.0.1:0,to=99

Unlike the libxl_domain_config struct, the libxl_domain_build_info
contains only a single libxl_vnc_info and libxl_sdl_info, so
populate these fields from the first vfb in
libxl_domain_config->vfbs.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Signed-off-by: David Kiarie <davidkiarie4@gmail.com>
(cherry picked from commit b55cc5f4e31b488c4f9c3c8470c992c1f8f5d09c)

src/libxl/libxl_conf.c

index 3de642b91d056d93d4fa59754620f1c76d6fb445..2e947a9049c5213bc5beedfb965608ad7eb14b63 100644 (file)
@@ -741,6 +741,20 @@ libxlMakeVfbList(libxlDriverPrivatePtr driver,
     d_config->vkbs = x_vkbs;
     d_config->num_vfbs = d_config->num_vkbs = nvfbs;
 
+    /*
+     * VNC or SDL info must also be set in libxl_domain_build_info
+     * for HVM domains.  Use the first vfb device.
+     */
+    if (STREQ(def->os.type, "hvm")) {
+        libxl_domain_build_info *b_info = &d_config->b_info;
+        libxl_device_vfb vfb = d_config->vfbs[0];
+
+        if (libxl_defbool_val(vfb.vnc.enable))
+            memcpy(&b_info->u.hvm.vnc, &vfb.vnc, sizeof(libxl_vnc_info));
+        else if (libxl_defbool_val(vfb.sdl.enable))
+            memcpy(&b_info->u.hvm.sdl, &vfb.sdl, sizeof(libxl_sdl_info));
+    }
+
     return 0;
 
 error: