|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XTF-ARM] tests: Hypercall xen_version testing
On Thu, 15 Dec 2022, Jan Beulich wrote:
> 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?
Actually the tests are not arm64 specific. Michal, I think you should
remove the comment above from the commit message. (What/if/when gets
enabled as a test in gitlab-ci is a different matter.)
> > --- /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 |