|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 32 of 32 RFC] libxl: Default to stub device model whenever possible
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1326715929 0
# Node ID 953a1ce643856edcf9fbbbc2680690b3a26dede8
# Parent a2dc899d0f229d82baca92a06b3b7a5b4d918324
libxl: Default to stub device model whenever possible.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c Mon Jan 16 11:33:18 2012 +0000
+++ b/tools/libxl/libxl_create.c Mon Jan 16 12:12:09 2012 +0000
@@ -94,7 +94,20 @@ int libxl__domain_build_info_setdefaults
b_info->device_model_version =
LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL;
- libxl_defbool_setdefault(&b_info->device_model_stubdomain, false);
+ /* Default to stub domain device model if possible */
+ if (b_info->type == LIBXL_DOMAIN_TYPE_HVM
+ && b_info->device_model_version
+ == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL
+ && access(libxl__stubdom_kernel(gc), R_OK) == 0) {
+ libxl_defbool_setdefault(&b_info->device_model_stubdomain, true);
+ } else {
+ libxl_defbool_setdefault(&b_info->device_model_stubdomain, false);
+ }
+
+ if (b_info->device_model_version !=
+ LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL &&
+ libxl_defbool_val(b_info->device_model_stubdomain))
+ return ERROR_INVAL;
if (!b_info->max_vcpus)
b_info->max_vcpus = 1;
diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c Mon Jan 16 11:33:18 2012 +0000
+++ b/tools/libxl/libxl_dm.c Mon Jan 16 12:12:09 2012 +0000
@@ -686,6 +686,11 @@ retry_transaction:
return 0;
}
+char *libxl__stubdom_kernel(libxl__gc *gc)
+{
+ return libxl__abs_path(gc, "ioemu-stubdom.gz",
libxl_xenfirmwaredir_path());
+}
+
static int libxl__create_stubdom(libxl__gc *gc,
int guest_domid,
libxl_domain_config *guest_config,
@@ -729,8 +734,7 @@ static int libxl__create_stubdom(libxl__
dm_config.b_info.target_memkb = dm_config.b_info.max_memkb;
dm_config.b_info.type = LIBXL_DOMAIN_TYPE_PV;
- dm_config.b_info.u.pv.kernel.path = libxl__abs_path(gc, "ioemu-stubdom.gz",
- libxl_xenfirmwaredir_path());
+ dm_config.b_info.u.pv.kernel.path = libxl__stubdom_kernel(gc);
dm_config.b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", guest_domid);
dm_config.b_info.u.pv.ramdisk.path = "";
dm_config.b_info.u.pv.features = "";
diff -r a2dc899d0f22 -r 953a1ce64385 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Mon Jan 16 11:33:18 2012 +0000
+++ b/tools/libxl/libxl_internal.h Mon Jan 16 12:12:09 2012 +0000
@@ -482,6 +482,8 @@ _hidden int libxl__create_device_model(l
libxl_domain_config *guest_config,
libxl__domain_build_state *state,
libxl__spawner_starting **starting_r);
+_hidden char *libxl__stubdom_kernel(libxl__gc *gc);
+
_hidden int libxl__create_xenpv_qemu(libxl__gc *gc, uint32_t domid,
libxl_domain_config *guest_config,
libxl__domain_build_state *state,
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |