|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] libs/guest: Move the guest ABI check earlier into xc_dom_parse_image()
commit 1787cc167906f3fef547affb443a64762392c464
Author: Jane Malalane <jane.malalane@xxxxxxxxxx>
AuthorDate: Tue Aug 17 16:19:24 2021 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Thu Aug 19 18:34:53 2021 +0100
libs/guest: Move the guest ABI check earlier into xc_dom_parse_image()
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 domain
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
this:
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>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
---
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++ )
{
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |