mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
libxl: move HVM emulated GFX support into b_info->u.hvm
Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
7b3879d236
commit
d79f0a1bb6
4 files changed
+156
-116
No files matched your search
+10
-10
@@ -96,6 +96,16 @@ int libxl_init_build_info(libxl_ctx *ctx,
|
||||
b_info->u.hvm.timer_mode = 1;
|
||||
b_info->u.hvm.nested_hvm = 0;
|
||||
b_info->u.hvm.no_incr_generationid = 0;
|
||||
|
||||
b_info->u.hvm.stdvga = 0;
|
||||
b_info->u.hvm.vnc.enable = 1;
|
||||
b_info->u.hvm.vnc.listen = strdup("127.0.0.1");
|
||||
b_info->u.hvm.vnc.display = 0;
|
||||
b_info->u.hvm.vnc.findunused = 1;
|
||||
b_info->u.hvm.keymap = NULL;
|
||||
b_info->u.hvm.sdl.enable = 0;
|
||||
b_info->u.hvm.sdl.opengl = 0;
|
||||
b_info->u.hvm.nographic = 0;
|
||||
break;
|
||||
case LIBXL_DOMAIN_TYPE_PV:
|
||||
b_info->u.pv.slack_memkb = 8 * 1024;
|
||||
@@ -121,17 +131,7 @@ int libxl_init_dm_info(libxl_ctx *ctx,
|
||||
dm_info->device_model_version = LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL;
|
||||
dm_info->device_model_stubdomain = false;
|
||||
dm_info->device_model = NULL;
|
||||
dm_info->videoram = libxl__sizekb_to_mb(b_info->video_memkb);
|
||||
|
||||
dm_info->stdvga = 0;
|
||||
dm_info->vnc.enable = 1;
|
||||
dm_info->vnc.listen = strdup("127.0.0.1");
|
||||
dm_info->vnc.display = 0;
|
||||
dm_info->vnc.findunused = 1;
|
||||
dm_info->keymap = NULL;
|
||||
dm_info->sdl.enable = 0;
|
||||
dm_info->sdl.opengl = 0;
|
||||
dm_info->nographic = 0;
|
||||
dm_info->serial = NULL;
|
||||
dm_info->boot = strdup("cda");
|
||||
dm_info->usb = 0;
|
||||
|
||||
+103
-62
@@ -78,7 +78,7 @@ static const libxl_vnc_info *dm_vnc(const libxl_domain_config *guest_config,
|
||||
{
|
||||
const libxl_vnc_info *vnc = NULL;
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
vnc = &info->vnc;
|
||||
vnc = &guest_config->b_info.u.hvm.vnc;
|
||||
} else if (guest_config->num_vfbs > 0) {
|
||||
vnc = &guest_config->vfbs[0].vnc;
|
||||
}
|
||||
@@ -90,13 +90,24 @@ static const libxl_sdl_info *dm_sdl(const libxl_domain_config *guest_config,
|
||||
{
|
||||
const libxl_sdl_info *sdl = NULL;
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
sdl = &info->sdl;
|
||||
sdl = &guest_config->b_info.u.hvm.sdl;
|
||||
} else if (guest_config->num_vfbs > 0) {
|
||||
sdl = &guest_config->vfbs[0].sdl;
|
||||
}
|
||||
return sdl && sdl->enable ? sdl : NULL;
|
||||
}
|
||||
|
||||
static const char *dm_keymap(const libxl_domain_config *guest_config,
|
||||
const libxl_device_model_info *info)
|
||||
{
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
return guest_config->b_info.u.hvm.keymap;
|
||||
} else if (guest_config->num_vfbs > 0) {
|
||||
return guest_config->vfbs[0].keymap;
|
||||
} else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
const char *dm,
|
||||
const libxl_domain_config *guest_config,
|
||||
@@ -108,6 +119,7 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
const libxl_vnc_info *vnc = dm_vnc(guest_config, info);
|
||||
const libxl_sdl_info *sdl = dm_sdl(guest_config, info);
|
||||
const int num_vifs = guest_config->num_vifs;
|
||||
const char *keymap = dm_keymap(guest_config, info);
|
||||
int i;
|
||||
flexarray_t *dm_args;
|
||||
dm_args = flexarray_make(16, 1);
|
||||
@@ -156,11 +168,8 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
}
|
||||
/* XXX sdl->{display,xauthority} into $DISPLAY/$XAUTHORITY */
|
||||
}
|
||||
if (info->keymap) {
|
||||
flexarray_vappend(dm_args, "-k", info->keymap, NULL);
|
||||
}
|
||||
if (info->nographic && (!sdl && !vnc)) {
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
if (keymap) {
|
||||
flexarray_vappend(dm_args, "-k", keymap, NULL);
|
||||
}
|
||||
if (info->serial) {
|
||||
flexarray_vappend(dm_args, "-serial", info->serial, NULL);
|
||||
@@ -168,10 +177,17 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
int ioemu_vifs = 0;
|
||||
|
||||
if (info->videoram) {
|
||||
flexarray_vappend(dm_args, "-videoram", libxl__sprintf(gc, "%d", info->videoram), NULL);
|
||||
if (b_info->u.hvm.nographic && (!sdl && !vnc)) {
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
}
|
||||
if (info->stdvga) {
|
||||
|
||||
if (b_info->video_memkb) {
|
||||
flexarray_vappend(dm_args, "-videoram",
|
||||
libxl__sprintf(gc, "%d",
|
||||
libxl__sizekb_to_mb(b_info->video_memkb)),
|
||||
NULL);
|
||||
}
|
||||
if (b_info->u.hvm.stdvga) {
|
||||
flexarray_append(dm_args, "-std-vga");
|
||||
}
|
||||
|
||||
@@ -225,7 +241,11 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc,
|
||||
if (info->gfx_passthru) {
|
||||
flexarray_append(dm_args, "-gfx_passthru");
|
||||
}
|
||||
} else {
|
||||
if (!sdl && !vnc)
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
}
|
||||
|
||||
if (info->saved_state) {
|
||||
flexarray_vappend(dm_args, "-loadvm", info->saved_state, NULL);
|
||||
}
|
||||
@@ -260,6 +280,42 @@ static const char *qemu_disk_format_string(libxl_disk_format format)
|
||||
}
|
||||
}
|
||||
|
||||
static char *dm_spice_options(libxl__gc *gc,
|
||||
const libxl_spice_info *spice)
|
||||
{
|
||||
char *opt;
|
||||
|
||||
if (!spice->port && !spice->tls_port) {
|
||||
LIBXL__LOG(CTX, LIBXL__LOG_ERROR,
|
||||
"at least one of the spiceport or tls_port must be provided");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!spice->disable_ticketing) {
|
||||
if (!spice->passwd) {
|
||||
LIBXL__LOG(CTX, LIBXL__LOG_ERROR,
|
||||
"spice ticketing is enabled but missing password");
|
||||
return NULL;
|
||||
}
|
||||
else if (!spice->passwd[0]) {
|
||||
LIBXL__LOG(CTX, LIBXL__LOG_ERROR,
|
||||
"spice password can't be empty");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
opt = libxl__sprintf(gc, "port=%d,tls-port=%d",
|
||||
spice->port, spice->tls_port);
|
||||
if (spice->host)
|
||||
opt = libxl__sprintf(gc, "%s,addr=%s", opt, spice->host);
|
||||
if (spice->disable_ticketing)
|
||||
opt = libxl__sprintf(gc, "%s,disable-ticketing", opt);
|
||||
else
|
||||
opt = libxl__sprintf(gc, "%s,password=%s", opt, spice->passwd);
|
||||
opt = libxl__sprintf(gc, "%s,agent-mouse=%s", opt,
|
||||
spice->agent_mouse ? "on" : "off");
|
||||
return opt;
|
||||
}
|
||||
|
||||
static char ** libxl__build_device_model_args_new(libxl__gc *gc,
|
||||
const char *dm,
|
||||
const libxl_domain_config *guest_config,
|
||||
@@ -274,6 +330,7 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
|
||||
const int num_vifs = guest_config->num_vifs;
|
||||
const libxl_vnc_info *vnc = dm_vnc(guest_config, info);
|
||||
const libxl_sdl_info *sdl = dm_sdl(guest_config, info);
|
||||
const char *keymap = dm_keymap(guest_config, info);
|
||||
flexarray_t *dm_args;
|
||||
int i;
|
||||
|
||||
@@ -332,61 +389,36 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
|
||||
flexarray_append(dm_args, "-sdl");
|
||||
/* XXX sdl->{display,xauthority} into $DISPLAY/$XAUTHORITY */
|
||||
}
|
||||
if (info->spice.enable) {
|
||||
char *spiceoptions = NULL;
|
||||
if (!info->spice.port && !info->spice.tls_port) {
|
||||
LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
|
||||
"at least one of the spiceport or tls_port must be provided");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!info->spice.disable_ticketing) {
|
||||
if (!info->spice.passwd) {
|
||||
LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
|
||||
"spice ticketing is enabled but missing password");
|
||||
return NULL;
|
||||
}
|
||||
else if (!info->spice.passwd[0]) {
|
||||
LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
|
||||
"spice password can't be empty");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
spiceoptions = libxl__sprintf(gc, "port=%d,tls-port=%d",
|
||||
info->spice.port, info->spice.tls_port);
|
||||
if (info->spice.host)
|
||||
spiceoptions = libxl__sprintf(gc,
|
||||
"%s,addr=%s", spiceoptions, info->spice.host);
|
||||
if (info->spice.disable_ticketing)
|
||||
spiceoptions = libxl__sprintf(gc, "%s,disable-ticketing",
|
||||
spiceoptions);
|
||||
else
|
||||
spiceoptions = libxl__sprintf(gc,
|
||||
"%s,password=%s", spiceoptions, info->spice.passwd);
|
||||
spiceoptions = libxl__sprintf(gc, "%s,agent-mouse=%s", spiceoptions,
|
||||
info->spice.agent_mouse ? "on" : "off");
|
||||
|
||||
flexarray_append(dm_args, "-spice");
|
||||
flexarray_append(dm_args, spiceoptions);
|
||||
}
|
||||
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_PV && !info->nographic) {
|
||||
/*if (info->type == LIBXL_DOMAIN_TYPE_PV && !b_info->nographic) {
|
||||
flexarray_vappend(dm_args, "-vga", "xenfb", NULL);
|
||||
} never was possible?*/
|
||||
|
||||
if (keymap) {
|
||||
flexarray_vappend(dm_args, "-k", keymap, NULL);
|
||||
}
|
||||
|
||||
if (info->keymap) {
|
||||
flexarray_vappend(dm_args, "-k", info->keymap, NULL);
|
||||
}
|
||||
if (info->nographic && (!sdl && !vnc)) {
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
}
|
||||
if (info->serial) {
|
||||
flexarray_vappend(dm_args, "-serial", info->serial, NULL);
|
||||
}
|
||||
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
int ioemu_vifs = 0;
|
||||
|
||||
if (info->stdvga) {
|
||||
if (b_info->u.hvm.nographic && (!sdl && !vnc)) {
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
}
|
||||
|
||||
if (b_info->u.hvm.spice.enable) {
|
||||
const libxl_spice_info *spice = &b_info->u.hvm.spice;
|
||||
char *spiceoptions = dm_spice_options(gc, spice);
|
||||
if (!spiceoptions)
|
||||
return NULL;
|
||||
|
||||
flexarray_append(dm_args, "-spice");
|
||||
flexarray_append(dm_args, spiceoptions);
|
||||
}
|
||||
|
||||
if (b_info->u.hvm.stdvga) {
|
||||
flexarray_vappend(dm_args, "-vga", "std", NULL);
|
||||
}
|
||||
|
||||
@@ -446,7 +478,12 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc,
|
||||
if (info->gfx_passthru) {
|
||||
flexarray_append(dm_args, "-gfx_passthru");
|
||||
}
|
||||
} else {
|
||||
if (!sdl && !vnc) {
|
||||
flexarray_append(dm_args, "-nographic");
|
||||
}
|
||||
}
|
||||
|
||||
if (info->saved_state) {
|
||||
/* This file descriptor is meant to be used by QEMU */
|
||||
int migration_fd = open(info->saved_state, O_RDONLY);
|
||||
@@ -555,19 +592,24 @@ static char ** libxl__build_device_model_args(libxl__gc *gc,
|
||||
}
|
||||
}
|
||||
|
||||
static int libxl__vfb_and_vkb_from_device_model_info(libxl__gc *gc,
|
||||
const libxl_device_model_info *info,
|
||||
static int libxl__vfb_and_vkb_from_hvm_guest_config(libxl__gc *gc,
|
||||
const libxl_domain_config *guest_config,
|
||||
libxl_device_vfb *vfb,
|
||||
libxl_device_vkb *vkb)
|
||||
{
|
||||
const libxl_domain_build_info *b_info = &guest_config->b_info;
|
||||
|
||||
if (b_info->type != LIBXL_DOMAIN_TYPE_HVM)
|
||||
return ERROR_INVAL;
|
||||
|
||||
memset(vfb, 0x00, sizeof(libxl_device_vfb));
|
||||
memset(vkb, 0x00, sizeof(libxl_device_vkb));
|
||||
|
||||
vfb->backend_domid = 0;
|
||||
vfb->devid = 0;
|
||||
vfb->vnc = info->vnc;
|
||||
vfb->keymap = info->keymap;
|
||||
vfb->sdl = info->sdl;
|
||||
vfb->vnc = b_info->u.hvm.vnc;
|
||||
vfb->keymap = b_info->u.hvm.keymap;
|
||||
vfb->sdl = b_info->u.hvm.sdl;
|
||||
|
||||
vkb->backend_domid = 0;
|
||||
vkb->devid = 0;
|
||||
@@ -670,8 +712,7 @@ static int libxl__create_stubdom(libxl__gc *gc,
|
||||
dm_config.vifs = guest_config->vifs;
|
||||
dm_config.num_vifs = guest_config->num_vifs;
|
||||
|
||||
libxl__vfb_and_vkb_from_device_model_info(gc, info, &vfb, &vkb);
|
||||
|
||||
libxl__vfb_and_vkb_from_hvm_guest_config(gc, guest_config, &vfb, &vkb);
|
||||
dm_config.vfbs = &vfb;
|
||||
dm_config.num_vfbs = 1;
|
||||
dm_config.vkbs = &vkb;
|
||||
|
||||
@@ -215,6 +215,13 @@ libxl_domain_build_info = Struct("domain_build_info",[
|
||||
("timer_mode", integer),
|
||||
("nested_hvm", bool),
|
||||
("no_incr_generationid", bool),
|
||||
("nographic", bool),
|
||||
("stdvga", bool),
|
||||
("vnc", libxl_vnc_info),
|
||||
# keyboard layout, default is en-us keyboard
|
||||
("keymap", string),
|
||||
("sdl", libxl_sdl_info),
|
||||
("spice", libxl_spice_info),
|
||||
])),
|
||||
("pv", Struct(None, [("kernel", libxl_file_reference),
|
||||
("slack_memkb", uint32),
|
||||
@@ -243,15 +250,6 @@ libxl_device_model_info = Struct("device_model_info",[
|
||||
("device_model", string),
|
||||
("saved_state", string),
|
||||
("type", libxl_domain_type),
|
||||
# size of the videoram in MB
|
||||
("videoram", integer),
|
||||
("stdvga", bool),
|
||||
("vnc", libxl_vnc_info),
|
||||
# keyboard layout, default is en-us keyboard
|
||||
("keymap", string),
|
||||
("sdl", libxl_sdl_info),
|
||||
("spice", libxl_spice_info),
|
||||
("nographic", bool),
|
||||
("gfx_passthru", bool),
|
||||
("serial", string),
|
||||
("boot", string),
|
||||
|
||||
+36
-35
@@ -364,29 +364,29 @@ static void printf_info(int domid,
|
||||
printf("\t\t\t(no_incr_generationid %d)\n",
|
||||
b_info->u.hvm.no_incr_generationid);
|
||||
|
||||
printf("\t\t\t(stdvga %d)\n", b_info->u.hvm.stdvga);
|
||||
printf("\t\t\t(vnc %d)\n", b_info->u.hvm.vnc.enable);
|
||||
printf("\t\t\t(vnclisten %s)\n", b_info->u.hvm.vnc.listen);
|
||||
printf("\t\t\t(vncdisplay %d)\n", b_info->u.hvm.vnc.display);
|
||||
printf("\t\t\t(vncunused %d)\n", b_info->u.hvm.vnc.findunused);
|
||||
printf("\t\t\t(keymap %s)\n", b_info->u.hvm.keymap);
|
||||
printf("\t\t\t(sdl %d)\n", b_info->u.hvm.sdl.enable);
|
||||
printf("\t\t\t(opengl %d)\n", b_info->u.hvm.sdl.opengl);
|
||||
printf("\t\t\t(nographic %d)\n", b_info->u.hvm.nographic);
|
||||
printf("\t\t\t(spice %d)\n", b_info->u.hvm.spice.enable);
|
||||
printf("\t\t\t(spiceport %d)\n", b_info->u.hvm.spice.port);
|
||||
printf("\t\t\t(spicetls_port %d)\n", b_info->u.hvm.spice.tls_port);
|
||||
printf("\t\t\t(spicehost %s)\n", b_info->u.hvm.spice.host);
|
||||
printf("\t\t\t(spicedisable_ticketing %d)\n",
|
||||
b_info->u.hvm.spice.disable_ticketing);
|
||||
printf("\t\t\t(spiceagent_mouse %d)\n", b_info->u.hvm.spice.agent_mouse);
|
||||
|
||||
printf("\t\t\t(device_model %s)\n", dm_info->device_model ? : "default");
|
||||
printf("\t\t\t(videoram %d)\n", dm_info->videoram);
|
||||
printf("\t\t\t(stdvga %d)\n", dm_info->stdvga);
|
||||
printf("\t\t\t(vnc %d)\n", dm_info->vnc.enable);
|
||||
printf("\t\t\t(vnclisten %s)\n", dm_info->vnc.listen);
|
||||
printf("\t\t\t(vncdisplay %d)\n", dm_info->vnc.display);
|
||||
printf("\t\t\t(vncunused %d)\n", dm_info->vnc.findunused);
|
||||
printf("\t\t\t(keymap %s)\n", dm_info->keymap);
|
||||
printf("\t\t\t(sdl %d)\n", dm_info->sdl.enable);
|
||||
printf("\t\t\t(gfx_passthru %d)\n", dm_info->gfx_passthru);
|
||||
printf("\t\t\t(opengl %d)\n", dm_info->sdl.opengl);
|
||||
printf("\t\t\t(nographic %d)\n", dm_info->nographic);
|
||||
printf("\t\t\t(serial %s)\n", dm_info->serial);
|
||||
printf("\t\t\t(boot %s)\n", dm_info->boot);
|
||||
printf("\t\t\t(usb %d)\n", dm_info->usb);
|
||||
printf("\t\t\t(usbdevice %s)\n", dm_info->usbdevice);
|
||||
printf("\t\t\t(spice %d)\n", dm_info->spice.enable);
|
||||
printf("\t\t\t(spiceport %d)\n", dm_info->spice.port);
|
||||
printf("\t\t\t(spicetls_port %d)\n", dm_info->spice.tls_port);
|
||||
printf("\t\t\t(spicehost %s)\n", dm_info->spice.host);
|
||||
printf("\t\t\t(spicedisable_ticketing %d)\n",
|
||||
dm_info->spice.disable_ticketing);
|
||||
printf("\t\t\t(spiceagent_mouse %d)\n", dm_info->spice.agent_mouse);
|
||||
printf("\t\t)\n");
|
||||
break;
|
||||
case LIBXL_DOMAIN_TYPE_PV:
|
||||
@@ -1259,37 +1259,38 @@ skip_vfb:
|
||||
|
||||
if (c_info->type == LIBXL_DOMAIN_TYPE_HVM) {
|
||||
if (!xlu_cfg_get_long (config, "stdvga", &l, 0))
|
||||
dm_info->stdvga = l;
|
||||
b_info->u.hvm.stdvga = l;
|
||||
if (!xlu_cfg_get_long (config, "vnc", &l, 0))
|
||||
dm_info->vnc.enable = l;
|
||||
xlu_cfg_replace_string (config, "vnclisten", &dm_info->vnc.listen, 0);
|
||||
xlu_cfg_replace_string (config, "vncpasswd", &dm_info->vnc.passwd, 0);
|
||||
b_info->u.hvm.vnc.enable = l;
|
||||
xlu_cfg_replace_string (config, "vnclisten", &b_info->u.hvm.vnc.listen, 0);
|
||||
xlu_cfg_replace_string (config, "vncpasswd", &b_info->u.hvm.vnc.passwd, 0);
|
||||
if (!xlu_cfg_get_long (config, "vncdisplay", &l, 0))
|
||||
dm_info->vnc.display = l;
|
||||
b_info->u.hvm.vnc.display = l;
|
||||
if (!xlu_cfg_get_long (config, "vncunused", &l, 0))
|
||||
dm_info->vnc.findunused = l;
|
||||
xlu_cfg_replace_string (config, "keymap", &dm_info->keymap, 0);
|
||||
b_info->u.hvm.vnc.findunused = l;
|
||||
xlu_cfg_replace_string (config, "keymap", &b_info->u.hvm.keymap, 0);
|
||||
if (!xlu_cfg_get_long (config, "sdl", &l, 0))
|
||||
dm_info->sdl.enable = l;
|
||||
b_info->u.hvm.sdl.enable = l;
|
||||
if (!xlu_cfg_get_long (config, "opengl", &l, 0))
|
||||
dm_info->sdl.opengl = l;
|
||||
b_info->u.hvm.sdl.opengl = l;
|
||||
if (!xlu_cfg_get_long (config, "spice", &l, 0))
|
||||
dm_info->spice.enable = l;
|
||||
b_info->u.hvm.spice.enable = l;
|
||||
if (!xlu_cfg_get_long (config, "spiceport", &l, 0))
|
||||
dm_info->spice.port = l;
|
||||
b_info->u.hvm.spice.port = l;
|
||||
if (!xlu_cfg_get_long (config, "spicetls_port", &l, 0))
|
||||
dm_info->spice.tls_port = l;
|
||||
xlu_cfg_replace_string (config, "spicehost", &dm_info->spice.host, 0);
|
||||
b_info->u.hvm.spice.tls_port = l;
|
||||
xlu_cfg_replace_string (config, "spicehost",
|
||||
&b_info->u.hvm.spice.host, 0);
|
||||
if (!xlu_cfg_get_long (config, "spicedisable_ticketing", &l, 0))
|
||||
dm_info->spice.disable_ticketing = l;
|
||||
b_info->u.hvm.spice.disable_ticketing = l;
|
||||
xlu_cfg_replace_string (config, "spicepasswd",
|
||||
&dm_info->spice.passwd, 0);
|
||||
&b_info->u.hvm.spice.passwd, 0);
|
||||
if (!xlu_cfg_get_long (config, "spiceagent_mouse", &l, 0))
|
||||
dm_info->spice.agent_mouse = l;
|
||||
b_info->u.hvm.spice.agent_mouse = l;
|
||||
else
|
||||
dm_info->spice.agent_mouse = 1;
|
||||
b_info->u.hvm.spice.agent_mouse = 1;
|
||||
if (!xlu_cfg_get_long (config, "nographic", &l, 0))
|
||||
dm_info->nographic = l;
|
||||
b_info->u.hvm.nographic = l;
|
||||
if (!xlu_cfg_get_long (config, "gfx_passthru", &l, 0))
|
||||
dm_info->gfx_passthru = l;
|
||||
xlu_cfg_replace_string (config, "serial", &dm_info->serial, 0);
|
||||
|
||||