Re: [PATCH 1/3] KVM: x86/mmu: remove unnecessary "bool shared" argument from functions

From: Sean Christopherson
Date: Fri Sep 29 2023 - 12:11:37 EST


On Thu, Sep 28, 2023, Paolo Bonzini wrote:
> Neither tdp_mmu_next_root nor kvm_tdp_mmu_put_root need to know
> if the lock is taken for read or write. Either way, protection
> is achieved via RCU and tdp_mmu_pages_lock. Remove the argument
> and just assert that the lock is taken.
>
> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> ---
> +void kvm_tdp_mmu_put_root(struct kvm *kvm, struct kvm_mmu_page *root)
> {
> - kvm_lockdep_assert_mmu_lock_held(kvm, shared);
> + /*
> + * Either read or write is okay, but the lock is needed because
> + * writers might not take tdp_mmu_pages_lock.
> + */

Nit, I'd prefer to say mmu_lock instead of "the lock", and be very explicit about
writers not needing to take tdp_mmu_pages_lock, e.g.

/*
* Either read or write is okay, but mmu_lock must be held as writers
* are not required to take tdp_mmu_pages_lock.
*/


> + lockdep_assert_held(&kvm->mmu_lock);
>
> if (!refcount_dec_and_test(&root->tdp_mmu_root_count))
> return;