Skip to contentSkip to conversation

libxl/arm: fix guest type conversion

PATCH Superseded Wei Liu 3 participants 3 messages Nov 1, 2018 – Nov 2, 2018

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Wei Liu

author
#0 lore raw

PATCH v2 1/1 libxl/arm: fix guest type conversion

Commit 359970fd8b ("tools/libxl: Switch Arm guest type to PVH") missed changing the type field in c_info. This issue didn't surface until ef72c93df9 which made creating PV guest on Arm unusable.

---
Cc: Stefano Stabellini <[email protected]>
Cc: Julien Grall <[email protected]>

v2: avoid duplicating error messages.

This should fix libvirt breakage.

---
 tools/libxl/libxl_arm.c    |  4 +---
 tools/libxl/libxl_create.c | 10 ++++++++++
 2 files changed, 11 insertions(+), 3 deletions(-)
tools/libxl/libxl_arm.c +1 -3
index 25dc3defc6..6f2dcab489 100644
@@ -1128,9 +1128,7 @@ void libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
     if (b_info->type != LIBXL_DOMAIN_TYPE_PV)
         return;
 
-    LOG(WARN, "Converting PV guest to PVH.");
-    LOG(WARN, "Arm guest are now PVH.");
-    LOG(WARN, "Please fix your configuration file/toolstack.");
+    LOG(DEBUG, "Converting build_info to PVH");
 
     /* Re-initialize type to PVH and all associated fields to defaults. */
     memset(&b_info->u, '\0', sizeof(b_info->u));
tools/libxl/libxl_create.c +10 -0
index 4bb750e951..311957f87c 100644
@@ -35,6 +35,16 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
         return ERROR_INVAL;
     }
 
+#if defined(__arm__) || defined(__aarch64__)
+    if (c_info->type == LIBXL_DOMAIN_TYPE_PV) {
+        LOG(WARN, "Converting PV guest to PVH.");
+        LOG(WARN, "Arm guest are now PVH.");
+        LOG(WARN, "Please fix your configuration file/toolstack.");
+
+        c_info->type = LIBXL_DOMAIN_TYPE_PVH;
+    }
+#endif
+
     if (c_info->type != LIBXL_DOMAIN_TYPE_PV) {
         libxl_defbool_setdefault(&c_info->hap, true);
         libxl_defbool_setdefault(&c_info->oos, true);
Signature · 7 lines
2.11.0


_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Reviewed-by on v2 1/1
#1 lore raw

Hi,

Quoted 6 lines · Wei Liu

Commit 359970fd8b ("tools/libxl: Switch Arm guest type to PVH") missed changing the type field in c_info. This issue didn't surface until ef72c93df9 which made creating PV guest on Arm unusable.

FWIW:

Cheers,

Quoted 49 lines

---
Cc: Stefano Stabellini <[email protected]>
Cc: Julien Grall <[email protected]>

v2: avoid duplicating error messages.

This should fix libvirt breakage.

---
  tools/libxl/libxl_arm.c    |  4 +---
  tools/libxl/libxl_create.c | 10 ++++++++++
  2 files changed, 11 insertions(+), 3 deletions(-)
tools/libxl/libxl_arm.c +1 -3
index 25dc3defc6..6f2dcab489 100644
@@ -1128,9 +1128,7 @@ void libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
      if (b_info->type != LIBXL_DOMAIN_TYPE_PV)
          return;
 
-    LOG(WARN, "Converting PV guest to PVH.");
-    LOG(WARN, "Arm guest are now PVH.");
-    LOG(WARN, "Please fix your configuration file/toolstack.");
+    LOG(DEBUG, "Converting build_info to PVH");
 
      /* Re-initialize type to PVH and all associated fields to defaults. */
      memset(&b_info->u, '\0', sizeof(b_info->u));
tools/libxl/libxl_create.c +10 -0
index 4bb750e951..311957f87c 100644
@@ -35,6 +35,16 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
          return ERROR_INVAL;
      }
 
+#if defined(__arm__) || defined(__aarch64__)
+    if (c_info->type == LIBXL_DOMAIN_TYPE_PV) {
+        LOG(WARN, "Converting PV guest to PVH.");
+        LOG(WARN, "Arm guest are now PVH.");
+        LOG(WARN, "Please fix your configuration file/toolstack.");
+
+        c_info->type = LIBXL_DOMAIN_TYPE_PVH;
+    }
+#endif
+
      if (c_info->type != LIBXL_DOMAIN_TYPE_PV) {
          libxl_defbool_setdefault(&c_info->hap, true);
          libxl_defbool_setdefault(&c_info->oos, true);
Signature · 6 lines
Julien Grall

_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
#2 lore raw
In reply to Wei Liu

Wei Liu writes ("[PATCH v2] libxl/arm: fix guest type conversion"):

Quoted 3 lines

Commit 359970fd8b ("tools/libxl: Switch Arm guest type to PVH") missed changing the type field in c_info. This issue didn't surface until ef72c93df9 which made creating PV guest on Arm unusable.

...

tools/libxl/libxl_create.c int libxl__domain_create_info_setdefault(libxl__gc *gc, · line 46

Quoted 9 lines
tools/libxl/libxl_create.c +9 -0
+#if defined(__arm__) || defined(__aarch64__)
+    if (c_info->type == LIBXL_DOMAIN_TYPE_PV) {
+        LOG(WARN, "Converting PV guest to PVH.");
+        LOG(WARN, "Arm guest are now PVH.");
+        LOG(WARN, "Please fix your configuration file/toolstack.");
+
+        c_info->type = LIBXL_DOMAIN_TYPE_PVH;
+    }
+#endif

Please, no #ifdefs in the main part of the code. Maybe I should have the Makefile throw a fit about this.

I think you may need to change
libxl__arch_domain_build_info_setdefault
to
libxl__arch_domain_create_info_setdefault

Sorry,
Ian.

_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel