linux/arch/s390/kvm
Christian Borntraeger fb7dc1d4dd KVM: s390: detect some program check loops
Sometimes (e.g. early boot) a guest is broken in such ways that it loops
100% delivering operation exceptions (illegal operation) but the pgm new
PSW is not set properly. This will result in code being read from
address zero, which usually contains another illegal op. Let's detect
this case and return to userspace. Instead of only detecting
this for address zero apply a heuristic that will work for any program
check new psw.
We do not want guest problem state to be able to trigger a guest panic,
e.g. by faulting on an address that is the same as the program check
new PSW, so we check for the problem state bit being off.

With proper handling in userspace we
a: get rid of CPU consumption of such broken guests
b: keep the program old PSW. This allows to find out the original illegal
   operation - making debugging such early boot issues much easier than
   with single stepping

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
2017-02-06 12:35:53 +01:00
..
diag.c KVM: s390: provide logging for diagnose 0x500 2016-06-10 12:07:26 +02:00
gaccess.c KVM: s390: Get rid of ar_t 2017-01-30 11:17:29 +01:00
gaccess.h KVM: s390: prepare to read random guest instructions 2017-01-30 11:19:16 +01:00
guestdbg.c KVM: s390: guestdbg: filter PER i-fetch on EXECUTE properly 2017-01-30 11:19:17 +01:00
intercept.c KVM: s390: detect some program check loops 2017-02-06 12:35:53 +01:00
interrupt.c ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
irq.h KVM: s390: irq routing for adapter interrupts. 2014-03-21 13:43:00 +01:00
Kconfig KVM: halt_polling: provide a way to qualify wakeups during poll 2016-05-13 17:29:23 +02:00
kvm-s390.c KVM: s390: Disable dirty log retrieval for UCONTROL guests 2017-02-06 11:20:12 +01:00
kvm-s390.h KVM: s390: guestdbg: filter PER i-fetch on EXECUTE properly 2017-01-30 11:19:17 +01:00
Makefile KVM: s390: vsie: initial support for nested virtualization 2016-06-21 09:43:33 +02:00
priv.c KVM: s390: Get rid of ar_t 2017-01-30 11:17:29 +01:00
sigp.c KVM: s390: don't use CPUSTAT_WAIT to detect if a VCPU is idle 2016-06-21 09:43:45 +02:00
sthyi.c KVM: s390: Fix STHYI buffer alignment for diag224 2016-10-26 13:46:44 +02:00
trace-s390.h KVM: s390: obey kptr_restrict in traces 2015-12-15 17:06:32 +01:00
trace.h KVM: s390: trace and count all skey intercepts 2016-06-10 12:07:31 +02:00
vsie.c KVM: s390: instruction-execution-protection support 2017-01-30 11:17:28 +01:00