linux/arch/s390/kernel
Martin Schwidefsky 8f149ea6e9 s390/nmi: improve revalidation of fpu / vector registers
The machine check handler will do one of two things if the floating-point
control, a floating point register or a vector register can not be
revalidated:
1) if the PSW indicates user mode the process is terminated
2) if the PSW indicates kernel mode the system is stopped

To unconditionally stop the system for 2) is incorrect.

There are three possible outcomes if the floating-point control, a
floating point register or a vector registers can not be revalidated:
1) The kernel is inside a kernel_fpu_begin/kernel_fpu_end block and
   needs the register. The system is stopped.
2) No active kernel_fpu_begin/kernel_fpu_end block and the CIF_CPU bit
   is not set. The user space process needs the register and is killed.
3) No active kernel_fpu_begin/kernel_fpu_end block and the CIF_FPU bit
   is set. Neither the kernel nor the user space process needs the
   lost register. Just revalidate it and continue.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2016-08-29 11:05:03 +02:00
..
vdso32 s390: enable kcov support 2016-06-28 09:32:39 +02:00
vdso64 s390: enable kcov support 2016-06-28 09:32:39 +02:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
Makefile s390/als: fix compile with gcov enabled 2016-07-31 05:28:00 -04:00
als.c s390/als: print missing facilities on facility mismatch 2016-07-31 05:27:59 -04:00
asm-offsets.c s390/mm: split arch/s390/mm/pgtable.c 2016-03-08 15:00:15 +01:00
audit.c
audit.h
base.S s390/kdump: fix nosmt kernel parameter 2015-06-25 09:39:26 +02:00
cache.c s390/cpuinfo: show dynamic and static cpu mhz 2016-06-13 15:58:17 +02:00
compat_audit.c
compat_linux.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
compat_linux.h s390: add support for vector extension 2014-10-09 09:14:13 +02:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390/compat: correct restore of high gprs on signal return 2016-02-22 09:29:35 +01:00
compat_wrapper.c s390: wire up copy_file_range syscall 2016-01-19 12:14:02 +01:00
cpcmd.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
crash_dump.c s390: make couple of variables and functions static 2016-05-10 13:24:50 +02:00
debug.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
diag.c - ARM: GICv3 ITS emulation and various fixes. Removal of the old 2016-08-02 16:11:27 -04:00
dis.c s390: remove math emulation code 2016-06-15 16:37:11 +02:00
dumpstack.c s390: stack address vs thread_info 2016-06-28 09:33:00 +02:00
early.c s390/time: LPAR offset handling 2016-06-13 15:58:20 +02:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry.S s390: have unique symbol for __switch_to address 2016-07-04 09:25:22 +02:00
entry.h s390/als: convert architecture level set code to C 2016-07-31 05:27:58 -04:00
fpu.c s390/fpu: improve kernel_fpu_[begin|end] 2016-08-29 11:05:01 +02:00
ftrace.c s390: remove all usages of PSW_ADDR_INSN 2016-01-19 12:14:03 +01:00
head.S s390: clarify compressed image code path 2016-08-08 15:41:31 +02:00
head64.S s390/cpumf: Fix lpp detection 2016-03-08 10:38:06 +01:00
head_kdump.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
idle.c s390/idle: convert open coded idle time seqcount 2014-12-08 09:42:32 +01:00
ipl.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2016-07-26 12:22:51 -07:00
irq.c s390: use SPARSE_IRQ 2016-06-13 15:58:24 +02:00
jump_label.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
kprobes.c s390/ftrace/jprobes: Fix conflict between jprobes and function graph tracing 2016-07-31 09:28:12 -04:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390/kexec: fix crash on resize of reserved memory 2016-06-13 15:58:19 +02:00
mcount.S s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
module.c module: s390: keep mod_arch_specific for livepatch modules 2016-04-01 15:00:11 +02:00
nmi.c s390/nmi: improve revalidation of fpu / vector registers 2016-08-29 11:05:03 +02:00
os_info.c s390/dump: streamline oldmem copy functions 2015-11-27 09:24:12 +01:00
perf_cpum_cf.c s390/perf: Convert the hotplug notifier to state machine callbacks (Counter) 2016-07-14 09:34:37 +02:00
perf_cpum_cf_events.c s390/cpum_cf: Export event names in sysfs 2013-12-16 14:37:50 +01:00
perf_cpum_sf.c Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-29 13:55:30 -07:00
perf_event.c s390/perf: remove perf_release/reserver_sampling functions 2016-06-28 09:32:25 +02:00
pgm_check.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
process.c exit_thread: accept a task parameter to be exited 2016-05-20 17:58:30 -07:00
processor.c s390/cpuinfo: show maximum thread id 2016-07-04 09:25:20 +02:00
ptrace.c Merge branch 'stable-4.8' of git://git.infradead.org/users/pcmoore/audit 2016-07-29 17:54:17 -07:00
reipl.S s390/dump: rework CPU register dump code 2015-11-27 09:24:14 +01:00
relocate_kernel.S s390: remove "64" suffix from a couple of files 2015-03-25 11:49:34 +01:00
runtime_instr.c s390: remove runtime instrumentation interrupts 2015-11-03 14:40:51 +01:00
s390_ksyms.c s390/fpu: split fpu-internal.h into fpu internals, api, and type headers 2015-10-16 09:41:12 +02:00
sclp.c s390/sclp: move uninitialized data to data section 2016-07-31 05:27:58 -04:00
setup.c s390/console: Make preferred console handling more consistent 2016-07-13 10:58:07 +02:00
signal.c s390: remove all usages of PSW_ADDR_AMODE 2016-01-19 12:14:02 +01:00
smp.c s390/smp: clean up a condition 2016-07-18 10:17:23 +02:00
stacktrace.c s390/dumpstack: merge all four stack tracers 2016-02-23 08:56:20 +01:00
suspend.c PCI: Include <linux/pci.h>, not <asm/pci.h> 2015-06-08 07:55:03 -05:00
swsusp.S s390/hibernate: fix save and restore of vector registers 2015-09-17 13:43:41 +02:00
sys_s390.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
syscalls.S s390: wire up preadv2/pwritev2 syscalls 2016-04-01 08:42:38 +02:00
sysinfo.c s390/fpu: improve kernel_fpu_[begin|end] 2016-08-29 11:05:01 +02:00
time.c s390/time: avoid races when updating tb_update_count 2016-08-29 11:04:58 +02:00
topology.c s390/topology: remove z10 special handling 2016-06-13 15:58:27 +02:00
trace.c s390/diag: avoid lockdep recursion 2016-02-11 13:05:56 +01:00
traps.c s390/fault: merge report_user_fault implementations 2016-03-02 06:44:27 -06:00
uprobes.c s390/uprobes: fix address space annotation 2015-03-25 11:49:47 +01:00
vdso.c vdso: make arch_setup_additional_pages wait for mmap_sem for write killable 2016-05-23 17:04:14 -07:00
vmlinux.lds.S s390: add proper __ro_after_init support 2016-06-13 15:58:23 +02:00
vtime.c s390: add missing declarations 2016-05-10 13:24:51 +02:00