libxl: introduce LIBXL_VGA_INTERFACE_TYPE_UNKNOWN

And use it as the default value for the VGA kind. This allows libxl to set
it to the default value later on when the domain type is known. For HVM
guests the default value is LIBXL_VGA_INTERFACE_TYPE_CIRRUS while for
HVMlite the default value is LIBXL_VGA_INTERFACE_TYPE_NONE.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Roger Pau Monne authored and Ian Jackson committed 2016-04-01 15:01:57 +01:00
1 parent 44914ad609
commit f31c790d45
4 files changed
+29 -3

No files matched your search

+10
View File
@@ -922,6 +922,16 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, libxl_mac *src);
ERROR_CHECKPOINT_DEVICE_NOT_SUPPORTED
#endif
/*
* LIBXL_HAVE_VGA_INTERFACE_TYPE_UNKNOWN
*
* In the case that LIBXL_HAVE_VGA_INTERFACE_TYPE_UNKNOWN is set the
* libxl_vga_interface_type enumeration type contains a
* LIBXL_VGA_INTERFACE_TYPE_UNKNOWN identifier. This is used to signal
* that a libxl_vga_interface_type type has not been initialized yet.
*/
#define LIBXL_HAVE_VGA_INTERFACE_TYPE_UNKNOWN 1
typedef char **libxl_string_list;
void libxl_string_list_dispose(libxl_string_list *sl);
int libxl_string_list_length(const libxl_string_list *sl);
+11 -2
View File
@@ -222,8 +222,12 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
if (b_info->u.hvm.mmio_hole_memkb == LIBXL_MEMKB_DEFAULT)
b_info->u.hvm.mmio_hole_memkb = 0;
if (!b_info->u.hvm.vga.kind)
b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
if (b_info->u.hvm.vga.kind == LIBXL_VGA_INTERFACE_TYPE_UNKNOWN) {
if (b_info->device_model_version == LIBXL_DEVICE_MODEL_VERSION_NONE)
b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_NONE;
else
b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_CIRRUS;
}
if (!b_info->u.hvm.hdtype)
b_info->u.hvm.hdtype = LIBXL_HDTYPE_IDE;
@@ -257,6 +261,11 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
}
break;
case LIBXL_DEVICE_MODEL_VERSION_NONE:
if (b_info->u.hvm.vga.kind != LIBXL_VGA_INTERFACE_TYPE_NONE) {
LOG(ERROR,
"guests without a device model cannot have an emulated video card");
return ERROR_INVAL;
}
b_info->video_memkb = 0;
break;
case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
+6
View File
@@ -531,6 +531,9 @@ static int libxl__build_device_model_args_old(libxl__gc *gc,
break;
case LIBXL_VGA_INTERFACE_TYPE_QXL:
break;
default:
LOG(ERROR, "Invalid emulated video card specified");
return ERROR_INVAL;
}
if (b_info->u.hvm.boot) {
@@ -1108,6 +1111,9 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
GCSPRINTF("qxl-vga,vram_size_mb=%"PRIu64",ram_size_mb=%"PRIu64,
(b_info->video_memkb/2/1024), (b_info->video_memkb/2/1024) ) );
break;
default:
LOG(ERROR, "Invalid emulated video card specified");
return ERROR_INVAL;
}
if (b_info->u.hvm.boot) {
+2 -1
View File
@@ -204,11 +204,12 @@ libxl_shutdown_reason = Enumeration("shutdown_reason", [
], init_val = "LIBXL_SHUTDOWN_REASON_UNKNOWN")
libxl_vga_interface_type = Enumeration("vga_interface_type", [
(0, "UNKNOWN"),
(1, "CIRRUS"),
(2, "STD"),
(3, "NONE"),
(4, "QXL"),
], init_val = "LIBXL_VGA_INTERFACE_TYPE_CIRRUS")
], init_val = "LIBXL_VGA_INTERFACE_TYPE_UNKNOWN")
libxl_vendor_device = Enumeration("vendor_device", [
(0, "NONE"),
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.