[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH RFC] tools/libxl: Switch Arm guest type to PVH

Currently, the toolstack is considering Arm guest always PV. However,
they are very similar to PVH because HW virtualization extension are used
and QEMU is not started. So switch Arm guest type to PVH.

Furthermore, the default type for Arm in xl will now be PVH to allow
smooth transition for user.

Signed-off-by: Julien Grall <julien.grall@xxxxxxx>


This was discussed at Xen Summit and also in various thread on
xen-devel. The latest one was when Andrew sent a patch to deny guest creation
on Arm with XEN_DOMCTL_CDF_hap unset.

I suspect we first implemented Arm guest as PV in libxl because PVH was
non-existent and the type was easier to avoid spawning QEMU. Note that
Linux and Xen are already considering Arm guest as PVH.

This patch is denying the creation of PV guest on Arm. This will have an
impact on any toolstack selecting PV for Arm (e.g libvirt) or anyone
using 'type="pv"' in libxl configuration file.

I am not entirely sure whether this is the best solution, any opinions?
 docs/man/xl.cfg.pod.5.in |  3 ++-
 tools/libxl/libxl_arm.c  | 10 +++++++++-
 tools/xl/xl_parse.c      |  4 ++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
index 47d88243b1..2c2af01515 100644
--- a/docs/man/xl.cfg.pod.5.in
+++ b/docs/man/xl.cfg.pod.5.in
@@ -86,7 +86,8 @@ guest operating systems. This is the default.
 Specifies that this is to be an PVH domain. That is a lightweight HVM-like
 guest without a device model and without many of the emulated devices
-available to HVM guests. Note that this mode requires a PVH aware kernel.
+available to HVM guests. Note that this mode requires a PVH aware kernel on
 =item B<type="hvm">
diff --git a/tools/libxl/libxl_arm.c b/tools/libxl/libxl_arm.c
index 8af9f6f992..3acac7fa93 100644
--- a/tools/libxl/libxl_arm.c
+++ b/tools/libxl/libxl_arm.c
@@ -978,7 +978,15 @@ int libxl__arch_domain_init_hw_description(libxl__gc *gc,
     int rc;
     uint64_t val;
-    assert(info->type == LIBXL_DOMAIN_TYPE_PV);
+    if (info->type == LIBXL_DOMAIN_TYPE_PV) {
+        LOG(ERROR, "PV guest not supported. Please use PVH.\n");
+        return ERROR_FEATURE_REMOVED;
+    }
+    else if (info->type != LIBXL_DOMAIN_TYPE_PVH) {
+        LOG(ERROR, "Unsupported Arm guest type %s\n",
+            libxl_domain_type_to_string(info->type));
+        return ERROR_FAIL;
+    }
     /* Set the value of domain param HVM_PARAM_CALLBACK_IRQ. */
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index e6c54483e0..b705f27277 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -937,7 +937,11 @@ void parse_config_data(const char *config_source,
     if (c_info->type == LIBXL_DOMAIN_TYPE_INVALID)
+#if defined(__arm__) || defined(__aarch64__)
+        c_info->type = LIBXL_DOMAIN_TYPE_PVH;
         c_info->type = LIBXL_DOMAIN_TYPE_PV;
     xlu_cfg_get_defbool(config, "hap", &c_info->hap, 0);

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.