]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/x86/apx: Add APX test
authorChang S. Bae <chang.seok.bae@intel.com>
Wed, 16 Apr 2025 02:16:55 +0000 (19:16 -0700)
committerIngo Molnar <mingo@kernel.org>
Wed, 16 Apr 2025 07:44:14 +0000 (09:44 +0200)
The extended general-purpose registers for APX may contain random data,
which is currently assumed by the xstate testing framework. This allows
the testing of the new userspace feature using the common test code.

Invoke the test entry function from apx.c after enumerating the
state component and adding it to the support list

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Sohil Mehta <sohil.mehta@intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Link: https://lore.kernel.org/r/20250416021720.12305-6-chang.seok.bae@intel.com
tools/testing/selftests/x86/Makefile
tools/testing/selftests/x86/apx.c [new file with mode: 0644]
tools/testing/selftests/x86/xstate.c
tools/testing/selftests/x86/xstate.h

index 28422c32cc8ff429ed4c73b9cf39883429e77c97..f703fcfe9f7c35c055cdfee313645ccc5ad824ae 100644 (file)
@@ -19,7 +19,7 @@ TARGETS_C_32BIT_ONLY := entry_from_vm86 test_syscall_vdso unwind_vdso \
                        test_FCMOV test_FCOMI test_FISTTP \
                        vdso_restorer
 TARGETS_C_64BIT_ONLY := fsgsbase sysret_rip syscall_numbering \
-                       corrupt_xstate_header amx lam test_shadow_stack avx
+                       corrupt_xstate_header amx lam test_shadow_stack avx apx
 # Some selftests require 32bit support enabled also on 64bit systems
 TARGETS_C_32BIT_NEEDED := ldt_gdt ptrace_syscall
 
@@ -136,3 +136,4 @@ $(OUTPUT)/nx_stack_64: CFLAGS += -Wl,-z,noexecstack
 $(OUTPUT)/avx_64: CFLAGS += -mno-avx -mno-avx512f
 $(OUTPUT)/amx_64: EXTRA_FILES += xstate.c
 $(OUTPUT)/avx_64: EXTRA_FILES += xstate.c
+$(OUTPUT)/apx_64: EXTRA_FILES += xstate.c
diff --git a/tools/testing/selftests/x86/apx.c b/tools/testing/selftests/x86/apx.c
new file mode 100644 (file)
index 0000000..d9c8d41
--- /dev/null
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#define _GNU_SOURCE
+
+#include "xstate.h"
+
+int main(void)
+{
+       test_xstate(XFEATURE_APX);
+}
index 23c1d6c964eaeb9d0f9f878ee0719812ebbeb110..97fe4bd8bc77de94a868edb3d8cc1d5242c08572 100644 (file)
@@ -31,7 +31,8 @@
         (1 << XFEATURE_OPMASK) |       \
         (1 << XFEATURE_ZMM_Hi256) |    \
         (1 << XFEATURE_Hi16_ZMM) |     \
-        (1 << XFEATURE_XTILEDATA))
+        (1 << XFEATURE_XTILEDATA) |    \
+        (1 << XFEATURE_APX))
 
 static inline uint64_t xgetbv(uint32_t index)
 {
index 42af36ec852f4a4757c2d0d61f35689ad87bbb12..e91e3092b5d244480a601bd56a2a86ae0f05799b 100644 (file)
@@ -33,6 +33,7 @@ enum xfeature {
        XFEATURE_RSRVD_COMP_16,
        XFEATURE_XTILECFG,
        XFEATURE_XTILEDATA,
+       XFEATURE_APX,
 
        XFEATURE_MAX,
 };
@@ -59,6 +60,7 @@ static const char *xfeature_names[] =
        "unknown xstate feature",
        "AMX Tile config",
        "AMX Tile data",
+       "APX registers",
        "unknown xstate feature",
 };