]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/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)
committerJim Fehlig <jfehlig@suse.com>
Tue, 18 Mar 2014 21:14:34 +0000 (15:14 -0600)
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>
src/libxl/libxl_conf.c

index aa5d958db3721588281416386a9470a7a5483b46..cfac8478c5f0aa8f4a078e11c6742f3c89b85657 100644 (file)
@@ -1022,6 +1022,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: