• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Drop locks around call to kvmppc_pin_guest_page · 081f323b
    Paul Mackerras authored
    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: default avatarPaul Mackerras <paulus@samba.org>
    Acked-by: default avatarAlexander Graf <agraf@suse.de>
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    081f323b
book3s_hv.c 38.1 KB