diff options
Diffstat (limited to '0067-tests-resource-Fix-HVM-guest-in-SHADOW-builds.patch')
-rw-r--r-- | 0067-tests-resource-Fix-HVM-guest-in-SHADOW-builds.patch | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/0067-tests-resource-Fix-HVM-guest-in-SHADOW-builds.patch b/0067-tests-resource-Fix-HVM-guest-in-SHADOW-builds.patch new file mode 100644 index 0000000..5ce4e17 --- /dev/null +++ b/0067-tests-resource-Fix-HVM-guest-in-SHADOW-builds.patch @@ -0,0 +1,110 @@ +From 9bc40dbcf9eafccc1923b2555286bf6a2af03b7a Mon Sep 17 00:00:00 2001 +From: Andrew Cooper <andrew.cooper3@citrix.com> +Date: Tue, 2 Apr 2024 16:24:07 +0200 +Subject: [PATCH 67/67] tests/resource: Fix HVM guest in !SHADOW builds +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Right now, test-resource always creates HVM Shadow guests. But if Xen has +SHADOW compiled out, running the test yields: + + $./test-resource + XENMEM_acquire_resource tests + Test x86 PV + Created d1 + Test grant table + Test x86 PVH + Skip: 95 - Operation not supported + +and doesn't really test HVM guests, but doesn't fail either. + +There's nothing paging-mode-specific about this test, so default to HAP if +possible and provide a more specific message if neither HAP or Shadow are +available. + +As we've got physinfo to hand, also provide more specific message about the +absence of PV or HVM support. + +Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> +Acked-by: Roger Pau Monné <roger.pau@citrix.com> +master commit: 0263dc9069ddb66335c72a159e09050b1600e56a +master date: 2024-03-01 20:14:19 +0000 +--- + tools/tests/resource/test-resource.c | 39 ++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c +index 0a950072f9..e2c4ba3478 100644 +--- a/tools/tests/resource/test-resource.c ++++ b/tools/tests/resource/test-resource.c +@@ -20,6 +20,8 @@ static xc_interface *xch; + static xenforeignmemory_handle *fh; + static xengnttab_handle *gh; + ++static xc_physinfo_t physinfo; ++ + static void test_gnttab(uint32_t domid, unsigned int nr_frames, + unsigned long gfn) + { +@@ -172,6 +174,37 @@ static void test_domain_configurations(void) + + printf("Test %s\n", t->name); + ++#if defined(__x86_64__) || defined(__i386__) ++ if ( t->create.flags & XEN_DOMCTL_CDF_hvm ) ++ { ++ if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_hvm) ) ++ { ++ printf(" Skip: HVM not available\n"); ++ continue; ++ } ++ ++ /* ++ * On x86, use HAP guests if possible, but skip if neither HAP nor ++ * SHADOW is available. ++ */ ++ if ( physinfo.capabilities & XEN_SYSCTL_PHYSCAP_hap ) ++ t->create.flags |= XEN_DOMCTL_CDF_hap; ++ else if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_shadow) ) ++ { ++ printf(" Skip: Neither HAP or SHADOW available\n"); ++ continue; ++ } ++ } ++ else ++ { ++ if ( !(physinfo.capabilities & XEN_SYSCTL_PHYSCAP_pv) ) ++ { ++ printf(" Skip: PV not available\n"); ++ continue; ++ } ++ } ++#endif ++ + rc = xc_domain_create(xch, &domid, &t->create); + if ( rc ) + { +@@ -214,6 +247,8 @@ static void test_domain_configurations(void) + + int main(int argc, char **argv) + { ++ int rc; ++ + printf("XENMEM_acquire_resource tests\n"); + + xch = xc_interface_open(NULL, NULL, 0); +@@ -227,6 +262,10 @@ int main(int argc, char **argv) + if ( !gh ) + err(1, "xengnttab_open"); + ++ rc = xc_physinfo(xch, &physinfo); ++ if ( rc ) ++ err(1, "Failed to obtain physinfo"); ++ + test_domain_configurations(); + + return !!nr_failures; +-- +2.44.0 + |