• P
    KVM: PPC: Book3S HV: Don't use kvm_memslots() in real mode · 797f9c07
    Paul Mackerras 提交于
    With HV KVM, some high-frequency hypercalls such as H_ENTER are handled
    in real mode, and need to access the memslots array for the guest.
    Accessing the memslots array is safe, because we hold the SRCU read
    lock for the whole time that a guest vcpu is running.  However, the
    checks that kvm_memslots() does when lockdep is enabled are potentially
    unsafe in real mode, when only the linear mapping is available.
    Furthermore, kvm_memslots() can be called from a secondary CPU thread,
    which is an offline CPU from the point of view of the host kernel,
    and is not running the task which holds the SRCU read lock.
    
    To avoid false positives in the checks in kvm_memslots(), and to avoid
    possible side effects from doing the checks in real mode, this replaces
    kvm_memslots() with kvm_memslots_raw() in all the places that execute
    in real mode.  kvm_memslots_raw() is a new function that is like
    kvm_memslots() but uses rcu_dereference_raw_notrace() instead of
    kvm_dereference_check().
    Signed-off-by: NPaul Mackerras <paulus@samba.org>
    Acked-by: NScott Wood <scottwood@freescale.com>
    797f9c07
book3s_hv_rm_mmu.c 25.1 KB