diff options
author | Paul Mackerras <paulus@samba.org> | 2012-06-01 14:20:24 +0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-06-19 16:04:13 +0400 |
commit | 081f323bd3cc3a4d5ee6276e53cc52eddfc20a63 (patch) | |
tree | 057cb2a7b22d55cd50275a5a5dff6b8ce56abbb7 /arch/powerpc/kvm/e500.h | |
parent | f961f72836eb6c0fd76201f6f6b2fafff93c4cea (diff) | |
download | linux-081f323bd3cc3a4d5ee6276e53cc52eddfc20a63.tar.xz |
KVM: PPC: Book3S HV: Drop locks around call to kvmppc_pin_guest_page
At the moment we call kvmppc_pin_guest_page() in kvmppc_update_vpa()
with two spinlocks held: the vcore lock and the vcpu->vpa_update_lock.
This is not good, since kvmppc_pin_guest_page() calls down_read() and
get_user_pages_fast(), both of which can sleep. This bug was introduced
in 2e25aa5f ("KVM: PPC: Book3S HV: Make virtual processor area
registration more robust").
This arranges to drop those spinlocks before calling
kvmppc_pin_guest_page() and re-take them afterwards. Dropping the
vcore lock in kvmppc_run_core() means we have to set the vcore_state
field to VCORE_RUNNING before we drop the lock, so that other vcpus
won't try to run this vcore.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Acked-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/e500.h')
0 files changed, 0 insertions, 0 deletions