|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XTF-ARM] tests: Hypercall xen_version testing
On 15.12.2022 16:25, Michal Orzel wrote:
> Add a new test hyp-xen-version to perform functional testing of
> xen_version hypercall. Check the following commands (more can be added
> later on):
> - XENVER_version,
> - XENVER_extraversion,
> - XENVER_compile_info,
> - XENVER_changeset
> - XENVER_get_features,
> - passing invalid command.
>
> For now, enable this test only for arm64.
What's wrong with exposing this uniformly?
> --- /dev/null
> +++ b/tests/hyp-xen-version/main.c
> @@ -0,0 +1,105 @@
> +/**
> + * @file tests/hyp-xen-version/main.c
> + * @ref test-hyp-xen-version
> + *
> + * @page test-hyp-xen-version Hypercall xen_version
> + *
> + * Functional testing of xen_version hypercall.
> + *
> + * @see tests/hyp-xen-version/main.c
> + */
> +#include <xtf.h>
> +
> +const char test_title[] = "Hypercall xen_version testing";
> +
> +#define INVALID_CMD -1
> +
> +void test_main(void)
> +{
> + int ret;
> +
> + printk("Checking XENVER_version:\n");
> + {
> + /*
> + * Version is returned directly in format: ((major << 16) | minor),
> + * so no need to check the return value for an error.
> + */
> + ret = hypercall_xen_version(XENVER_version, NULL);
> + printk(" version: %u.%u\n", ret >> 16, ret & 0xFFFF);
> + }
> +
> + printk("Checking XENVER_extraversion:\n");
> + {
> + xen_extraversion_t xen_ev;
> + memset(&xen_ev, 0, sizeof(xen_ev));
> +
> + ret = hypercall_xen_version(XENVER_extraversion, xen_ev);
> + if ( ret < 0 )
> + return xtf_error("Error %d\n", ret);
This, ...
> + printk(" extraversion: %s\n", xen_ev);
> + }
> +
> + printk("Checking XENVER_compile_info:\n");
> + {
> + xen_compile_info_t xen_ci;
> + memset(&xen_ci, 0, sizeof(xen_ci));
> +
> + ret = hypercall_xen_version(XENVER_compile_info, &xen_ci);
> + if ( ret < 0 )
> + return xtf_error("Error %d\n", ret);
... this, and ...
> + printk(" compiler: %s\n", xen_ci.compiler);
> + printk(" compile_by: %s\n", xen_ci.compile_by);
> + printk(" compile_domain: %s\n", xen_ci.compile_domain);
> + printk(" compile_date: %s\n", xen_ci.compile_date);
> + }
> +
> + printk("Checking XENVER_changeset:\n");
> + {
> + xen_changeset_info_t xen_cs;
> + memset(&xen_cs, 0, sizeof(xen_cs));
> +
> + ret = hypercall_xen_version(XENVER_changeset, &xen_cs);
> + if ( ret < 0 )
> + return xtf_error("Error %d\n", ret);
... this can fail because of XSM denying access. (Others can of course
also fail for this reason, but here possible failure is kind of
"intended" - see the dummy xsm_xen_version() handling.) Therefore I
would like to suggest that you also special case getting back -EPERM,
resulting in e.g. just a warning instead of an error.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |