Messages in this thread Patch in this message | | | Date | Wed, 23 Mar 2022 23:31:39 -0000 | From | "tip-bot2 for Chang S. Bae" <> | Subject | [tip: x86/urgent] selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test |
| |
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: 20df737561484cb2d42e537663c03a7311d2b3c1 Gitweb: https://git.kernel.org/tip/20df737561484cb2d42e537663c03a7311d2b3c1 Author: Chang S. Bae <chang.seok.bae@intel.com> AuthorDate: Sat, 29 Jan 2022 09:36:47 -08:00 Committer: Thomas Gleixner <tglx@linutronix.de> CommitterDate: Wed, 23 Mar 2022 21:28:34 +01:00
selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test
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> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20220129173647.27981-3-chang.seok.bae@intel.com
--- tools/testing/selftests/x86/amx.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c index 3615ef4..2189f03 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 set a wrong bitmask: %lx, expected: %lx.\n", + bitmask, expected_bitmask); + } else { printf("\tARCH_REQ_XCOMP_PERM is successful.\n"); } }
| |