WSL2-Linux-Kernel/arch/s390/kvm
David Hildenbrand db37386147 KVM: s390: rework broken SIGP STOP interrupt handling
A VCPU might never stop if it intercepts (for whatever reason) between
"fake interrupt delivery" and execution of the stop function.

Heart of the problem is that SIGP STOP is an interrupt that has to be
processed on every SIE entry until the VCPU finally executes the stop
function.

This problem was made apparent by commit 7dfc63cf97
(KVM: s390: allow only one SIGP STOP (AND STORE STATUS) at a time).
With the old code, the guest could (incorrectly) inject SIGP STOPs
multiple times. The bug of losing a sigp stop exists in KVM before
7dfc63cf97, but it was hidden by Linux guests doing a sigp stop loop.
The new code (rightfully) returns CC=2 and does not queue a new
interrupt.

This patch is a simple fix of the problem. Longterm we are going to
rework that code - e.g. get rid of the action bits and so on.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
[some additional patch description]
2014-07-31 09:20:35 +02:00
..
Kconfig KVM: s390: irq routing for adapter interrupts. 2014-03-21 13:43:00 +01:00
Makefile KVM: s390: hardware support for guest debugging 2014-04-22 13:24:51 +02:00
diag.c KVM: s390: implement KVM_(S|G)ET_MP_STATE for user space state control 2014-07-10 14:11:17 +02:00
gaccess.c KVM: s390: Enable DAT support for TPROT handler 2014-05-30 09:39:36 +02:00
gaccess.h KVM: s390: Enable DAT support for TPROT handler 2014-05-30 09:39:36 +02:00
guestdbg.c KVM: s390: return -EFAULT if copy_from_user() fails 2014-05-06 14:57:59 +02:00
intercept.c KVM: s390: implement KVM_(S|G)ET_MP_STATE for user space state control 2014-07-10 14:11:17 +02:00
interrupt.c KVM: s390: rework broken SIGP STOP interrupt handling 2014-07-31 09:20:35 +02:00
irq.h KVM: s390: irq routing for adapter interrupts. 2014-03-21 13:43:00 +01:00
kvm-s390.c KVM: s390: advertise KVM_CAP_S390_IRQCHIP 2014-07-21 13:22:47 +02:00
kvm-s390.h KVM: s390: remove the tasklet used by the hrtimer 2014-07-21 13:22:42 +02:00
priv.c KVM: s390: Enable DAT support for TPROT handler 2014-05-30 09:39:36 +02:00
sigp.c KVM: s390: Fix memory leak on busy SIGP stop 2014-07-30 15:29:40 +02:00
trace-s390.h KVM: s390: enable IBS for single running VCPUs 2014-04-29 15:01:54 +02:00
trace.h KVM: s390: interpretive execution of SIGP EXTERNAL CALL 2014-05-16 14:57:28 +02:00