]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
KVM: PPC: Book3S HV: Use new mutex to synchronize MMU setup
authorPaul Mackerras <paulus@ozlabs.org>
Thu, 23 May 2019 06:35:34 +0000 (16:35 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Wed, 29 May 2019 03:44:36 +0000 (13:44 +1000)
commit0d4ee88d92884c661fcafd5576da243aa943dc24
treeaceeeea58f0da9a1f928d1b52e83ebba5d90674b
parentc395fe1d8e49a5aa03504fcacfb7c95b5a4c6e04
KVM: PPC: Book3S HV: Use new mutex to synchronize MMU setup

Currently the HV KVM code uses kvm->lock in conjunction with a flag,
kvm->arch.mmu_ready, to synchronize MMU setup and hold off vcpu
execution until the MMU-related data structures are ready.  However,
this means that kvm->lock is being taken inside vcpu->mutex, which
is contrary to Documentation/virtual/kvm/locking.txt and results in
lockdep warnings.

To fix this, we add a new mutex, kvm->arch.mmu_setup_lock, which nests
inside the vcpu mutexes, and is taken in the places where kvm->lock
was taken that are related to MMU setup.

Additionally we take the new mutex in the vcpu creation code at the
point where we are creating a new vcore, in order to provide mutual
exclusion with kvmppc_update_lpcr() and ensure that an update to
kvm->arch.lpcr doesn't get missed, which could otherwise lead to a
stale vcore->lpcr value.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kvm/book3s_64_mmu_hv.c
arch/powerpc/kvm/book3s_hv.c