diff options
author | pingfan liu <qemulist@gmail.com> | 2013-11-15 08:35:00 (GMT) |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-11-18 21:41:57 (GMT) |
commit | 91648ec09c1ef69c4d840ab6dab391bfb452d554 (patch) | |
tree | 05cb5c7b284901e91984039244298094a3e3604d /arch/powerpc/kvm/book3s_interrupts.S | |
parent | c9438092cae4a5bdbd146ca1385e85dcd6e847f8 (diff) | |
download | linux-91648ec09c1ef69c4d840ab6dab391bfb452d554.tar.xz |
powerpc: kvm: fix rare but potential deadlock scene
Since kvmppc_hv_find_lock_hpte() is called from both virtmode and
realmode, so it can trigger the deadlock.
Suppose the following scene:
Two physical cpuM, cpuN, two VM instances A, B, each VM has a group of
vcpus.
If on cpuM, vcpu_A_1 holds bitlock X (HPTE_V_HVLOCK), then is switched
out, and on cpuN, vcpu_A_2 try to lock X in realmode, then cpuN will be
caught in realmode for a long time.
What makes things even worse if the following happens,
On cpuM, bitlockX is hold, on cpuN, Y is hold.
vcpu_B_2 try to lock Y on cpuM in realmode
vcpu_A_2 try to lock X on cpuN in realmode
Oops! deadlock happens
Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com>
Reviewed-by: Paul Mackerras <paulus@samba.org>
CC: stable@vger.kernel.org
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm/book3s_interrupts.S')
0 files changed, 0 insertions, 0 deletions