tools/tests/resource/test-resource.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
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.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
---
tools/tests/resource/test-resource.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c
index 7ae88ea34807..2796053588d3 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,23 @@ static void test_domain_configurations(void)
printf("Test %s\n", t->name);
+#if defined(__x86_64__) || defined(__i386__)
+ /*
+ * On x86, use HAP guests if possible, but skip if neither HAP nor
+ * SHADOW is available.
+ */
+ if ( t->create.flags & XEN_DOMCTL_CDF_hvm )
+ {
+ 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;
+ }
+ }
+#endif
+
rc = xc_domain_create(xch, &domid, &t->create);
if ( rc )
{
@@ -214,6 +233,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 +248,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;
base-commit: 635dd1120a01961a39dce6ad3f09692681379378
prerequisite-patch-id: 1fddefae616fa9a57ddc85bbf770e3c5bdb47b1f
prerequisite-patch-id: 50c4a201d8fa10c1797a1b17f3f2729b5787da84
prerequisite-patch-id: 4b4799fae62b5f41b9b0d2078e8b081605341a0a
--
2.30.2
On Thu, Feb 29, 2024 at 08:53:54PM +0000, Andrew Cooper wrote:
> 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.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
One comment below.
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Wei Liu <wl@xen.org>
> ---
> tools/tests/resource/test-resource.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c
> index 7ae88ea34807..2796053588d3 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,23 @@ static void test_domain_configurations(void)
>
> printf("Test %s\n", t->name);
>
> +#if defined(__x86_64__) || defined(__i386__)
> + /*
> + * On x86, use HAP guests if possible, but skip if neither HAP nor
> + * SHADOW is available.
> + */
> + if ( t->create.flags & XEN_DOMCTL_CDF_hvm )
> + {
> + 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;
> + }
> + }
Provided that you are already checking, might also be worth to keep in
mind that at some point we might want to also check for
XEN_SYSCTL_PHYSCAP_{hvm,pv} and skip those tests if the requested domain
type is not available.
Thanks, Roger.
On 01/03/2024 11:49 am, Roger Pau Monné wrote:
> On Thu, Feb 29, 2024 at 08:53:54PM +0000, Andrew Cooper wrote:
>> 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.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>
>
> One comment below.
>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Wei Liu <wl@xen.org>
>> ---
>> tools/tests/resource/test-resource.c | 25 +++++++++++++++++++++++++
>> 1 file changed, 25 insertions(+)
>>
>> diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c
>> index 7ae88ea34807..2796053588d3 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,23 @@ static void test_domain_configurations(void)
>>
>> printf("Test %s\n", t->name);
>>
>> +#if defined(__x86_64__) || defined(__i386__)
>> + /*
>> + * On x86, use HAP guests if possible, but skip if neither HAP nor
>> + * SHADOW is available.
>> + */
>> + if ( t->create.flags & XEN_DOMCTL_CDF_hvm )
>> + {
>> + 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;
>> + }
>> + }
> Provided that you are already checking, might also be worth to keep in
> mind that at some point we might want to also check for
> XEN_SYSCTL_PHYSCAP_{hvm,pv} and skip those tests if the requested domain
> type is not available.
Fair point. Lemme do a v2.
~Andrew
© 2016 - 2026 Red Hat, Inc.