]>
Commit | Line | Data |
---|---|---|
9e1c2c07 GKH |
1 | From 9279ddf23ce78ff2676e8e8e19fec0f022c26d04 Mon Sep 17 00:00:00 2001 |
2 | From: Dominik Brodowski <linux@dominikbrodowski.net> | |
3 | Date: Tue, 13 Feb 2018 09:15:19 +0100 | |
4 | Subject: selftests/x86: Disable tests requiring 32-bit support on pure 64-bit systems | |
5 | ||
6 | From: Dominik Brodowski <linux@dominikbrodowski.net> | |
7 | ||
8 | commit 9279ddf23ce78ff2676e8e8e19fec0f022c26d04 upstream. | |
9 | ||
10 | The ldt_gdt and ptrace_syscall selftests, even in their 64-bit variant, use | |
11 | hard-coded 32-bit syscall numbers and call "int $0x80". | |
12 | ||
13 | This will fail on 64-bit systems with CONFIG_IA32_EMULATION=y disabled. | |
14 | ||
15 | Therefore, do not build these tests if we cannot build 32-bit binaries | |
16 | (which should be a good approximation for CONFIG_IA32_EMULATION=y being enabled). | |
17 | ||
18 | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net> | |
19 | Cc: Andy Lutomirski <luto@kernel.org> | |
20 | Cc: Dmitry Safonov <dsafonov@virtuozzo.com> | |
21 | Cc: Linus Torvalds <torvalds@linux-foundation.org> | |
22 | Cc: Peter Zijlstra <peterz@infradead.org> | |
23 | Cc: Thomas Gleixner <tglx@linutronix.de> | |
24 | Cc: linux-kselftest@vger.kernel.org | |
25 | Cc: shuah@kernel.org | |
26 | Link: http://lkml.kernel.org/r/20180211111013.16888-6-linux@dominikbrodowski.net | |
27 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | |
28 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
29 | ||
30 | --- | |
31 | tools/testing/selftests/x86/Makefile | 20 +++++++++++++------- | |
32 | 1 file changed, 13 insertions(+), 7 deletions(-) | |
33 | ||
34 | --- a/tools/testing/selftests/x86/Makefile | |
35 | +++ b/tools/testing/selftests/x86/Makefile | |
36 | @@ -5,16 +5,26 @@ include ../lib.mk | |
37 | ||
38 | .PHONY: all all_32 all_64 warn_32bit_failure clean | |
39 | ||
40 | -TARGETS_C_BOTHBITS := single_step_syscall sysret_ss_attrs syscall_nt ptrace_syscall test_mremap_vdso \ | |
41 | - check_initial_reg_state sigreturn ldt_gdt iopl mpx-mini-test ioperm \ | |
42 | +UNAME_M := $(shell uname -m) | |
43 | +CAN_BUILD_I386 := $(shell ./check_cc.sh $(CC) trivial_32bit_program.c -m32) | |
44 | +CAN_BUILD_X86_64 := $(shell ./check_cc.sh $(CC) trivial_64bit_program.c) | |
45 | + | |
46 | +TARGETS_C_BOTHBITS := single_step_syscall sysret_ss_attrs syscall_nt test_mremap_vdso \ | |
47 | + check_initial_reg_state sigreturn iopl mpx-mini-test ioperm \ | |
48 | protection_keys test_vdso test_vsyscall | |
49 | TARGETS_C_32BIT_ONLY := entry_from_vm86 syscall_arg_fault test_syscall_vdso unwind_vdso \ | |
50 | test_FCMOV test_FCOMI test_FISTTP \ | |
51 | vdso_restorer | |
52 | TARGETS_C_64BIT_ONLY := fsgsbase sysret_rip | |
53 | +# Some selftests require 32bit support enabled also on 64bit systems | |
54 | +TARGETS_C_32BIT_NEEDED := ldt_gdt ptrace_syscall | |
55 | ||
56 | -TARGETS_C_32BIT_ALL := $(TARGETS_C_BOTHBITS) $(TARGETS_C_32BIT_ONLY) | |
57 | +TARGETS_C_32BIT_ALL := $(TARGETS_C_BOTHBITS) $(TARGETS_C_32BIT_ONLY) $(TARGETS_C_32BIT_NEEDED) | |
58 | TARGETS_C_64BIT_ALL := $(TARGETS_C_BOTHBITS) $(TARGETS_C_64BIT_ONLY) | |
59 | +ifeq ($(CAN_BUILD_I386)$(CAN_BUILD_X86_64),11) | |
60 | +TARGETS_C_64BIT_ALL += $(TARGETS_C_32BIT_NEEDED) | |
61 | +endif | |
62 | + | |
63 | BINARIES_32 := $(TARGETS_C_32BIT_ALL:%=%_32) | |
64 | BINARIES_64 := $(TARGETS_C_64BIT_ALL:%=%_64) | |
65 | ||
66 | @@ -23,10 +33,6 @@ BINARIES_64 := $(patsubst %,$(OUTPUT)/%, | |
67 | ||
68 | CFLAGS := -O2 -g -std=gnu99 -pthread -Wall -no-pie | |
69 | ||
70 | -UNAME_M := $(shell uname -m) | |
71 | -CAN_BUILD_I386 := $(shell ./check_cc.sh $(CC) trivial_32bit_program.c -m32) | |
72 | -CAN_BUILD_X86_64 := $(shell ./check_cc.sh $(CC) trivial_64bit_program.c) | |
73 | - | |
74 | ifeq ($(CAN_BUILD_I386),1) | |
75 | all: all_32 | |
76 | TEST_PROGS += $(BINARIES_32) |