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

[PATCH] libs/guest: Move the guest ABI check earlier into xc_dom_parse_image()

  • To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jane Malalane <jane.malalane@xxxxxxxxxx>
  • Date: Tue, 17 Aug 2021 16:19:24 +0100
  • Authentication-results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
  • Cc: Jane Malalane <jane.malalane@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Juergen Gross <jgross@xxxxxxxx>
  • Delivery-date: Tue, 17 Aug 2021 15:22:16 +0000
  • Ironport-hdrordr: A9a23:cvk4HanDMkZI9fMNuIRNWXQ5fV7pDfI63DAbv31ZSRFFG/Fxl6 iV8sjztCWE7wr5N0tBpTntAsW9qBDnhPpICOsqTNSftWDd0QPCRuxfBOPZsljd8kbFl9K1u5 0OT0EHMqyTMWRH
  • Ironport-sdr: xjW3u0gF7PP+I0m3LAQkvSQyKUu32M7NAKTvPnRw3IKwkG4BsbspjsMdn/voJ1GJyhelgFebFY pfounqrlRfD24PGH4zP9xkedgFedyLFbiNHy8a00tQaBFnI/0pHsvWqmfk5bThke84zpB4fLoK 6qW04RRjxe+vwpWgDCYWZsKe9W3RJaXcHiCAgn1/VQPVT7N8BSiU9YzOtLnrCimyl+bB1+lC4C VwqK2H+vvxWhfbMWAJsQo617IIlJ/kXPI7fU+T5JgDVMUr0YdvNYGe7OL+TMqJNOHHMyJkyP+n PkaKZPSjtiCaW7QyUV4kzq46
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Xen may not support 32-bit PV guest for a number of reasons (lack of
CONFIG_PV32, explicit pv=no-32 command line argument, or implicitly
due to CET being enabled) and advertises this to the toolstack via the
absence of xen-3.0-x86_32p ABI.

Currently, when trying to boot a 32-bit PV guest, the ABI check is too
late and the build explodes in the following manner yielding an
unhelpful error message:

  xc: error: panic: xg_dom_boot.c:121: xc_dom_boot_mem_init: can't allocate low 
memory for domain: Out of memory
  libxl: error: libxl_dom.c:586:libxl__build_dom: xc_dom_boot_mem_init failed: 
Operation not supported
  libxl: error: libxl_create.c:1573:domcreate_rebuild_done: Domain 1:cannot 
(re-)build domain: -3
  libxl: error: libxl_domain.c:1182:libxl__destroy_domid: Domain 1:Non-existant 
  libxl: error: libxl_domain.c:1136:domain_destroy_callback: Domain 1:Unable to 
destroy guest
  libxl: error: libxl_domain.c:1063:domain_destroy_cb: Domain 1:Destruction of 
domain failed

Move the ABI check earlier into xc_dom_parse_image() along with other
ELF-note feature checks.  With this adjustment, it now looks like

  xc: error: panic: xg_dom_boot.c:88: xc_dom_compat_check: guest type 
xen-3.0-x86_32p not supported by xen kernel, sorry: Invalid kernel
  libxl: error: libxl_dom.c:571:libxl__build_dom: xc_dom_parse_image failed
  domainbuilder: detail: xc_dom_release: called
  libxl: error: libxl_create.c:1573:domcreate_rebuild_done: Domain 11:cannot 
(re-)build domain: -3
  libxl: error: libxl_domain.c:1182:libxl__destroy_domid: Domain 
11:Non-existant domain
  libxl: error: libxl_domain.c:1136:domain_destroy_callback: Domain 11:Unable 
to destroy guest
  libxl: error: libxl_domain.c:1063:domain_destroy_cb: Domain 11:Destruction of 
domain failed

Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Jane Malalane <jane.malalane@xxxxxxxxxx>
CC: Ian Jackson <iwj@xxxxxxxxxxxxxx>
CC: Wei Liu <wl@xxxxxxx>
CC: Juergen Gross <jgross@xxxxxxxx>
 tools/libs/guest/xg_dom_boot.c | 4 ----
 tools/libs/guest/xg_dom_core.c | 4 ++++
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/libs/guest/xg_dom_boot.c b/tools/libs/guest/xg_dom_boot.c
index dac96b17a5..f809dcbe97 100644
--- a/tools/libs/guest/xg_dom_boot.c
+++ b/tools/libs/guest/xg_dom_boot.c
@@ -191,10 +191,6 @@ int xc_dom_boot_image(struct xc_dom_image *dom)
     dom->shared_info_mfn = info.shared_info_frame;
-    /* sanity checks */
-    if ( !xc_dom_compat_check(dom) )
-        return -1;
     /* initial mm setup */
     if ( dom->arch_hooks->setup_pgtables &&
          (rc = dom->arch_hooks->setup_pgtables(dom)) != 0 )
diff --git a/tools/libs/guest/xg_dom_core.c b/tools/libs/guest/xg_dom_core.c
index 4918ee517b..2e4c1330ea 100644
--- a/tools/libs/guest/xg_dom_core.c
+++ b/tools/libs/guest/xg_dom_core.c
@@ -922,6 +922,10 @@ int xc_dom_parse_image(struct xc_dom_image *dom)
         goto err;
+    /* Check guest ABI */
+    if ( !xc_dom_compat_check(dom) )
+        return -1;
     /* check features */
     for ( i = 0; i < XENFEAT_NR_SUBMAPS; i++ )



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