diff options
author | 2015-07-28 15:03:05 +0200 | |
---|---|---|
committer | 2015-07-30 13:11:13 +0200 | |
commit | 586b7ccdb7143b6a9b975d2c6ad52b6ca5c162b9 (patch) | |
tree | 6de1a65ddb32e31348b3223f21f3c6e7219f4ceb /tools/perf/scripts/python/call-graph-from-postgresql.py | |
parent | KVM: x86: rename quirk constants to KVM_X86_QUIRK_* (diff) | |
download | linux-dev-586b7ccdb7143b6a9b975d2c6ad52b6ca5c162b9.tar.xz linux-dev-586b7ccdb7143b6a9b975d2c6ad52b6ca5c162b9.zip |
KVM: s390: Fix hang VCPU hang/loop regression
commit 785dbef407d8 ("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: 785dbef407d8 ("KVM: s390: optimize round trip time in request handling")
Diffstat (limited to 'tools/perf/scripts/python/call-graph-from-postgresql.py')
0 files changed, 0 insertions, 0 deletions