Index: libvirt-1.1.2/src/libxl/libxl_conf.c =================================================================== --- libvirt-1.1.2.orig/src/libxl/libxl_conf.c +++ libvirt-1.1.2/src/libxl/libxl_conf.c @@ -524,6 +524,30 @@ libxlMakeChrdevStr(virDomainChrDefPtr de } static int +libxlFixupDomBuildInfo(virDomainDefPtr def, libxl_domain_config *d_config) +{ + libxl_domain_build_info *b_info = &d_config->b_info; + int hvm = STREQ(def->os.type, "hvm"); + libxl_device_vfb vfb; + + if (!hvm) + return 0; + + if (d_config->num_vfbs) { + 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)); + else + return -1; + } + + return 0; +} + + +static int libxlMakeDomBuildInfo(virDomainObjPtr vm, libxl_domain_config *d_config) { virDomainDefPtr def = vm->def; @@ -1025,6 +1049,9 @@ libxlBuildDomainConfig(libxlDriverPrivat if (libxlMakeVfbList(driver, def, d_config) < 0) return -1; + if (libxlFixupDomBuildInfo(def, d_config) < 0) + return -1; + d_config->on_reboot = def->onReboot; d_config->on_poweroff = def->onPoweroff; d_config->on_crash = def->onCrash;