s390: convert to generic entry
This patch converts s390 to use the generic entry infrastructure from kernel/entry/*. There are a few special things on s390: - PIF_PER_TRAP is moved to TIF_PER_TRAP as the generic code doesn't know about our PIF flags in exit_to_user_mode_loop(). - The old code had several ways to restart syscalls: a) PIF_SYSCALL_RESTART, which was only set during execve to force a restart after upgrading a process (usually qemu-kvm) to pgste page table extensions. b) PIF_SYSCALL, which is set by do_signal() to indicate that the current syscall should be restarted. This is changed so that do_signal() now also uses PIF_SYSCALL_RESTART. Continuing to use PIF_SYSCALL doesn't work with the generic code, and changing it to PIF_SYSCALL_RESTART makes PIF_SYSCALL and PIF_SYSCALL_RESTART more unique. - On s390 calling sys_sigreturn or sys_rt_sigreturn is implemented by executing a svc instruction on the process stack which causes a fault. While handling that fault the fault code sets PIF_SYSCALL to hand over processing to the syscall code on exit to usermode. The patch introduces PIF_SYSCALL_RET_SET, which is set if ptrace sets a return value for a syscall. The s390x ptrace ABI uses r2 both for the syscall number and return value, so ptrace cannot set the syscall number + return value at the same time. The flag makes handling that a bit easier. do_syscall() will just skip executing the syscall if PIF_SYSCALL_RET_SET is set. CONFIG_DEBUG_ASCE was removd in favour of the generic CONFIG_DEBUG_ENTRY. CR1/7/13 will be checked both on kernel entry and exit to contain the correct asces. Signed-off-by:Sven Schnelle <svens@linux.ibm.com> Signed-off-by:
Vasily Gorbik <gor@linux.ibm.com>
Showing
- arch/s390/Kconfig 1 addition, 0 deletionsarch/s390/Kconfig
- arch/s390/Kconfig.debug 6 additions, 4 deletionsarch/s390/Kconfig.debug
- arch/s390/configs/debug_defconfig 1 addition, 1 deletionarch/s390/configs/debug_defconfig
- arch/s390/configs/defconfig 0 additions, 1 deletionarch/s390/configs/defconfig
- arch/s390/include/asm/cputime.h 2 additions, 0 deletionsarch/s390/include/asm/cputime.h
- arch/s390/include/asm/elf.h 3 additions, 4 deletionsarch/s390/include/asm/elf.h
- arch/s390/include/asm/entry-common.h 60 additions, 0 deletionsarch/s390/include/asm/entry-common.h
- arch/s390/include/asm/fpu/api.h 2 additions, 0 deletionsarch/s390/include/asm/fpu/api.h
- arch/s390/include/asm/idle.h 3 additions, 1 deletionarch/s390/include/asm/idle.h
- arch/s390/include/asm/lowcore.h 2 additions, 2 deletionsarch/s390/include/asm/lowcore.h
- arch/s390/include/asm/nmi.h 1 addition, 0 deletionsarch/s390/include/asm/nmi.h
- arch/s390/include/asm/processor.h 32 additions, 20 deletionsarch/s390/include/asm/processor.h
- arch/s390/include/asm/ptrace.h 6 additions, 3 deletionsarch/s390/include/asm/ptrace.h
- arch/s390/include/asm/syscall.h 9 additions, 2 deletionsarch/s390/include/asm/syscall.h
- arch/s390/include/asm/thread_info.h 3 additions, 0 deletionsarch/s390/include/asm/thread_info.h
- arch/s390/include/asm/uaccess.h 1 addition, 1 deletionarch/s390/include/asm/uaccess.h
- arch/s390/include/asm/vtime.h 14 additions, 0 deletionsarch/s390/include/asm/vtime.h
- arch/s390/include/uapi/asm/ptrace.h 3 additions, 2 deletionsarch/s390/include/uapi/asm/ptrace.h
- arch/s390/kernel/Makefile 1 addition, 1 deletionarch/s390/kernel/Makefile
- arch/s390/kernel/asm-offsets.c 2 additions, 17 deletionsarch/s390/kernel/asm-offsets.c
Loading
Please register or sign in to comment