linux/arch/s390/kvm
Christian Borntraeger 586b7ccdb7 KVM: s390: Fix hang VCPU hang/loop regression
commit 785dbef407 ("KVM: s390: optimize round trip time in request
handling") introduced a regression. This regression was seen with
CPU hotplug in the guest and switching between 1 or 2 CPUs. This will
set/reset the IBS control via synced request.

Whenever we make a synced request, we first set the vcpu->requests
bit and then block the vcpu. The handler, on the other hand, unblocks
itself, processes vcpu->requests (by clearing them) and unblocks itself
once again.

Now, if the requester sleeps between setting of vcpu->requests and
blocking, the handler will clear the vcpu->requests bit and try to
unblock itself (although no bit is set). When the requester wakes up,
it blocks the VCPU and we have a blocked VCPU without requests.

Solution is to always unset the block bit.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Fixes: 785dbef407 ("KVM: s390: optimize round trip time in request handling")
2015-07-30 13:11:13 +02:00
..
diag.c KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
gaccess.c KVM: s390: Add MEMOP ioctls for reading/writing guest memory 2015-03-17 16:26:24 +01:00
gaccess.h KVM: s390: Add MEMOP ioctls for reading/writing guest memory 2015-03-17 16:26:24 +01:00
guestdbg.c KVM: s390: Use the read_guest_abs() in guest debug functions 2015-03-06 13:41:02 +01:00
intercept.c KVM: s390: drop handling of interception code 12 2015-05-08 15:51:17 +02:00
interrupt.c The bulk of the changes here is for x86. And for once it's not 2015-06-24 09:36:49 -07:00
irq.h KVM: s390: irq routing for adapter interrupts. 2014-03-21 13:43:00 +01:00
Kconfig rcu: Make SRCU optional by using CONFIG_SRCU 2015-01-06 11:04:29 -08:00
kvm-s390.c KVM: s390: Fix hang VCPU hang/loop regression 2015-07-30 13:11:13 +02:00
kvm-s390.h KVM: s390: provide functions for blocking all CPUs 2015-05-08 15:51:15 +02:00
Makefile KVM: s390: hardware support for guest debugging 2014-04-22 13:24:51 +02:00
priv.c KVM: s390: Enable guest EDAT2 support 2015-05-08 15:51:14 +02:00
sigp.c KVM: s390: Guest's memory access functions get access registers 2015-03-17 16:25:04 +01:00
trace-s390.h tracing: Add TRACE_SYSTEM_VAR to kvm-s390 2015-04-07 12:31:39 -04:00
trace.h KVM: s390: interpretive execution of SIGP EXTERNAL CALL 2014-05-16 14:57:28 +02:00