linux/tools/testing/selftests/x86
Tong Bo a20d452a2d selftests/x86: Support Atom for syscall_arg_fault test
Atom-based CPUs trigger stack fault when invoke 32-bit SYSENTER instruction
with invalid register values. So we also need SIGBUS handling in this case.

Following is assembly when the fault exception happens.

(gdb) disassemble $eip
Dump of assembler code for function __kernel_vsyscall:
   0xf7fd8fe0 <+0>:     push   %ecx
   0xf7fd8fe1 <+1>:     push   %edx
   0xf7fd8fe2 <+2>:     push   %ebp
   0xf7fd8fe3 <+3>:     mov    %esp,%ebp
   0xf7fd8fe5 <+5>:     sysenter
   0xf7fd8fe7 <+7>:     int    $0x80
=> 0xf7fd8fe9 <+9>:     pop    %ebp
   0xf7fd8fea <+10>:    pop    %edx
   0xf7fd8feb <+11>:    pop    %ecx
   0xf7fd8fec <+12>:    ret
End of assembler dump.

According to Intel SDM, this could also be a Stack Segment Fault(#SS, 12),
except a normal Page Fault(#PF, 14). Especially, in section 6.9 of Vol.3A,
both stack and page faults are within the 10th(lowest priority) class, and
as it said, "exceptions within each class are implementation-dependent and
may vary from processor to processor". It's expected for processors like
Intel Atom to trigger stack fault(SIGBUS), while we get page fault(SIGSEGV)
from common Core processors.

Signed-off-by: Tong Bo <bo.tong@intel.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2019-05-21 09:24:30 -06:00
..
.gitignore selftests: x86: add missing executables to .gitignore 2017-05-03 10:55:20 -06:00
check_cc.sh selftests, x86: Rework x86 target architecture detection 2015-05-12 20:02:40 -06:00
check_initial_reg_state.c selftests/x86: Add check_initial_reg_state() 2016-01-29 09:46:37 +01:00
entry_from_vm86.c selftests/x86/entry_from_vm86: Add test cases for POPF 2018-03-14 09:21:01 +01:00
fsgsbase.c selftests/x86/fsgsbase: Test selectors 1, 2, and 3 2017-08-10 17:15:13 +02:00
ioperm.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
iopl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ldt_gdt.c x86/ldt: Make the LDT mapping RO 2017-12-23 21:13:01 +01:00
Makefile selftests/x86: Detect -no-pie availability 2018-05-30 15:21:51 -06:00
mov_ss_trap.c x86/selftests: Add mov_to_ss test 2018-05-14 11:14:45 +02:00
mpx-debug.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpx-dig.c selftest/x86/mpx-dig.c: Remove duplicate header 2019-04-08 16:18:21 -06:00
mpx-hw.h x86/mpx/selftests: Fix up weird arrays 2017-11-21 09:34:52 +01:00
mpx-mini-test.c x86/mpx/selftests: fix spelling mistake "succeded" -> "succeeded" 2019-01-14 18:50:17 -07:00
mpx-mm.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pkey-helpers.h x86/pkeys/selftests: Avoid printf-in-signal deadlocks 2018-05-14 11:14:45 +02:00
protection_keys.c x86/selftests/pkeys: Fork() to check for state being preserved 2019-01-15 10:33:45 +01:00
ptrace_syscall.c selftests/x86/ptrace_syscall: Fix for yet more glibc interference 2018-03-19 09:06:15 +01:00
raw_syscall_helper_32.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sigreturn.c selftests/x86/sigreturn: Do minor cleanups 2018-06-27 09:36:56 +02:00
single_step_syscall.c selftests/x86: Do not rely on "int $0x80" in single_step_syscall.c 2018-02-15 01:15:48 +01:00
syscall_arg_fault.c selftests/x86: Support Atom for syscall_arg_fault test 2019-05-21 09:24:30 -06:00
syscall_nt.c selftests/x86: In syscall_nt, test NT|TF as well 2016-03-10 09:48:12 +01:00
sysret_rip.c selftests/x86: Add a selftest for SYSRET to noncanonical addresses 2017-01-05 09:20:02 +01:00
sysret_ss_attrs.c x86, selftests: Add a test for the "sysret_ss_attrs" bug 2015-05-08 13:33:59 +02:00
test_FCMOV.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_FCOMI.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_FISTTP.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_mremap_vdso.c selftests/x86: Do not rely on "int $0x80" in test_mremap_vdso.c 2018-02-13 09:05:37 +01:00
test_syscall_vdso.c x86/entry/64/compat: Preserve r8-r11 in int $0x80 2018-04-27 17:07:58 +02:00
test_vdso.c x86/vdso: Fix vDSO syscall fallback asm constraint regression 2018-10-04 08:17:50 +02:00
test_vsyscall.c x86/vsyscall/64: Drop "native" vsyscalls 2018-03-08 06:48:15 +01:00
thunks_32.S x86/asm/entry/32, selftests: Add 'test_syscall_vdso' test 2015-09-18 09:40:48 +02:00
thunks.S x86, selftests: Add a test for the "sysret_ss_attrs" bug 2015-05-08 13:33:59 +02:00
trivial_32bit_program.c selftests, x86: Rework x86 target architecture detection 2015-05-12 20:02:40 -06:00
trivial_64bit_program.c selftest, x86: fix incorrect comment 2015-05-26 15:58:41 -06:00
trivial_program.c selftests/x86: Detect -no-pie availability 2018-05-30 15:21:51 -06:00
unwind_vdso.c tools/testing/selftests/x86/unwind_vdso.c: Remove duplicate header 2019-01-14 18:50:42 -07:00
vdso_restorer.c selftests/x86: Test __kernel_sigreturn and __kernel_rt_sigreturn 2016-01-13 10:34:40 +01:00