Messages in this thread | | | Date | Thu, 14 Mar 2024 16:37:55 -0700 | Subject | Re: [PATCH v2] selftests: x86: skip the tests if prerequisites aren't fulfilled | From | "Chang S. Bae" <> |
| |
On 3/14/2024 4:44 AM, Muhammad Usama Anjum wrote: > Skip instead of failing when prerequisite conditions aren't fulfilled, > such as invalid xstate values etc. This patch would make the tests show > as skip when run by: > make -C tools/testing/selftests/ TARGETS=x86 run_tests > > ... > # timeout set to 45 > # selftests: x86: amx_64 > # # xstate cpuid: invalid tile data size/offset: 0/0 > ok 42 selftests: x86: amx_64 # SKIP > # timeout set to 45 > # selftests: x86: lam_64 > # # Unsupported LAM feature! > ok 43 selftests: x86: lam_64 # SKIP > ... > > Cc: Chang S. Bae <chang.seok.bae@intel.com> > Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com> > --- > Changes since v1: > - Use arch_prctl to check if amx is supported > --- > tools/testing/selftests/x86/amx.c | 27 ++++++++++----------------- > tools/testing/selftests/x86/lam.c | 2 +- > 2 files changed, 11 insertions(+), 18 deletions(-) > > diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c > index d884fd69dd510..95aad6d8849be 100644 > --- a/tools/testing/selftests/x86/amx.c > +++ b/tools/testing/selftests/x86/amx.c > @@ -103,21 +103,6 @@ static void clearhandler(int sig) > > #define CPUID_LEAF1_ECX_XSAVE_MASK (1 << 26) > #define CPUID_LEAF1_ECX_OSXSAVE_MASK (1 << 27) > -static inline void check_cpuid_xsave(void) > -{ > - uint32_t eax, ebx, ecx, edx; > - > - /* > - * CPUID.1:ECX.XSAVE[bit 26] enumerates general > - * support for the XSAVE feature set, including > - * XGETBV. > - */ > - __cpuid_count(1, 0, eax, ebx, ecx, edx); > - if (!(ecx & CPUID_LEAF1_ECX_XSAVE_MASK)) > - fatal_error("cpuid: no CPU xsave support"); > - if (!(ecx & CPUID_LEAF1_ECX_OSXSAVE_MASK)) > - fatal_error("cpuid: no OS xsave support"); > -} > > static uint32_t xbuf_size; > > @@ -350,6 +335,7 @@ enum expected_result { FAIL_EXPECTED, SUCCESS_EXPECTED }; > > /* arch_prctl() and sigaltstack() test */ > > +#define ARCH_GET_XCOMP_SUPP 0x1021 > #define ARCH_GET_XCOMP_PERM 0x1022 > #define ARCH_REQ_XCOMP_PERM 0x1023 > > @@ -928,8 +914,15 @@ static void test_ptrace(void) > > int main(void) > { > - /* Check hardware availability at first */ > - check_cpuid_xsave(); > + unsigned long features; > + long rc; > + > + rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_SUPP, &features); > + if (rc || (features & XFEATURE_MASK_XTILE) != XFEATURE_MASK_XTILE) { > + ksft_print_msg("no AMX support\n"); > + return KSFT_SKIP; > + } > +
Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
Thanks, Chang
| |