Message ID | 20220129173647.27981-3-chang.seok.bae@intel.com |
---|---|
State | Accepted |
Commit | 20df737561484cb2d42e537663c03a7311d2b3c1 |
Headers | show |
Series | None | expand |
On Sat, Jan 29 2022 at 09:36, Chang S. Bae wrote: > Update the arch_prctl test to check the permission bitmap whether the > requested feature is added as expected or not. > > Every non-dynamic feature that is enabled is permitted already for use. > TILECFG is not dynamic feature. Ensure the bit is always on from > ARCH_GET_XCOMP_PERM. Running it on a machine which does not have AMX results in: amx_64: [FAIL] xstate cpuid: invalid tile data size/offset: 0/0: Success It's not a failure, really. Selftests are supposed to run on all machines and the proper thing to do if a hardware feature is not available is to SKIP the test and return 0. Thanks, tglx
On 3/23/2022 9:44 AM, Thomas Gleixner wrote: > > Running it on a machine which does not have AMX results in: > > amx_64: [FAIL] xstate cpuid: invalid tile data size/offset: 0/0: Success > > It's not a failure, really. Selftests are supposed to run on all > machines and the proper thing to do if a hardware feature is not > available is to SKIP the test and return 0. Ah, right. The test should be just *skipped* on non-AMX or even non-XSAVE systems. Will follow up with a separate patch. Thanks, Chang
diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c index 3615ef4a48bb..e1e2c8f3356f 100644 --- a/tools/testing/selftests/x86/amx.c +++ b/tools/testing/selftests/x86/amx.c @@ -368,9 +368,16 @@ static void req_xtiledata_perm(void) static void validate_req_xcomp_perm(enum expected_result exp) { - unsigned long bitmask; + unsigned long bitmask, expected_bitmask; long rc; + rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_PERM, &bitmask); + if (rc) { + fatal_error("prctl(ARCH_GET_XCOMP_PERM) error: %ld", rc); + } else if (!(bitmask & XFEATURE_MASK_XTILECFG)) { + fatal_error("ARCH_GET_XCOMP_PERM returns XFEATURE_XTILECFG off."); + } + rc = syscall(SYS_arch_prctl, ARCH_REQ_XCOMP_PERM, XFEATURE_XTILEDATA); if (exp == FAIL_EXPECTED) { if (rc) { @@ -383,10 +390,15 @@ static void validate_req_xcomp_perm(enum expected_result exp) fatal_error("ARCH_REQ_XCOMP_PERM saw unexpected failure.\n"); } + expected_bitmask = bitmask | XFEATURE_MASK_XTILEDATA; + rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_PERM, &bitmask); if (rc) { fatal_error("prctl(ARCH_GET_XCOMP_PERM) error: %ld", rc); - } else if (bitmask & XFEATURE_MASK_XTILE) { + } else if (bitmask != expected_bitmask) { + fatal_error("ARCH_REQ_XCOMP_PERM saw a wrong bitmask: %lx, expected: %lx.\n", + bitmask, expected_bitmask); + } else { printf("\tARCH_REQ_XCOMP_PERM is successful.\n"); } }
Update the arch_prctl test to check the permission bitmap whether the requested feature is added as expected or not. Every non-dynamic feature that is enabled is permitted already for use. TILECFG is not dynamic feature. Ensure the bit is always on from ARCH_GET_XCOMP_PERM. Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: linux-kselftest@vger.kernel.org Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org --- tools/testing/selftests/x86/amx.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)