linux/arch/s390
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
..
appldata mm: move most file-based accounting to the node 2016-07-28 16:07:41 -07:00
boot s390: clarify compressed image code path 2016-08-08 15:41:31 +02:00
configs s390/config: make the vector optimized crc function builtin 2016-08-08 15:41:32 +02:00
crypto s390/fpu: improve kernel_fpu_[begin|end] 2016-08-29 11:05:01 +02:00
hypfs - ARM: GICv3 ITS emulation and various fixes. Removal of the old 2016-08-02 16:11:27 -04:00
include s390/fpu: improve kernel_fpu_[begin|end] 2016-08-29 11:05:01 +02:00
kernel s390/nmi: improve revalidation of fpu / vector registers 2016-08-29 11:05:03 +02:00
kvm Merge branch 's390forkvm' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux 2016-08-26 16:34:19 +02:00
lib Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2016-08-16 15:50:22 -07:00
mm s390/mm: merge local / non-local IDTE helper 2016-08-24 09:23:56 +02:00
net s390/bpf: fix recache skb->data/hlen for skb_vlan_push/pop 2016-05-19 09:14:27 +02:00
numa s390/numa: only set possible nodes within node_possible_map 2016-07-31 05:28:00 -04:00
oprofile s390/oprofile: remove hardware sampler support 2016-06-28 09:32:22 +02:00
pci s390/pci: add zpci_report_error interface 2016-08-24 09:23:56 +02:00
tools s390/facilities: do not generate DWORDS define anymore 2016-07-31 05:27:59 -04:00
defconfig s390/config: make the vector optimized crc function builtin 2016-08-08 15:41:32 +02:00
Kbuild s390/numa: add core infrastructure 2015-08-03 18:40:25 +02:00
Kconfig virtio/vhost: fixes and cleanups for 4.8 2016-08-11 14:10:23 -07:00
Kconfig.debug arch: consolidate CONFIG_STRICT_DEVM in lib/Kconfig.debug 2016-01-09 06:30:49 -08:00
Makefile s390/facilities: add helper tool to generate facility lists 2015-12-18 14:59:20 +01:00