Messages in this thread Patch in this message | | | Date | Thu, 21 Sep 2023 12:02:33 +0200 | From | Paolo Bonzini <> | Subject | Re: [PATCH 3/3] KVM: x86/mmu: Stop zapping invalidated TDP MMU roots asynchronously |
| |
On 9/16/23 02:39, Sean Christopherson wrote: > + if (!root->tdp_mmu_scheduled_root_to_zap) > + continue; > + > + root->tdp_mmu_scheduled_root_to_zap = false;
This is protected by slots_lock... tricky.
Worth squashing in a comment and also a small update to another comment:
diff --git a/arch/x86/kvm/mmu/mmu_internal.h b/arch/x86/kvm/mmu/mmu_internal.h index 93b9d50c24ad..decc1f153669 100644 --- a/arch/x86/kvm/mmu/mmu_internal.h +++ b/arch/x86/kvm/mmu/mmu_internal.h @@ -60,6 +60,8 @@ struct kvm_mmu_page { bool unsync; union { u8 mmu_valid_gen; + + /* Only accessed under slots_lock. */ bool tdp_mmu_scheduled_root_to_zap; }; diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c index ca3304c2c00c..070ee5b2c271 100644 --- a/arch/x86/kvm/mmu/tdp_mmu.c +++ b/arch/x86/kvm/mmu/tdp_mmu.c @@ -246,7 +246,7 @@ hpa_t kvm_tdp_mmu_get_vcpu_root_hpa(struct kvm_vcpu *vcpu) * by a memslot update or by the destruction of the VM. Initialize the * refcount to two; one reference for the vCPU, and one reference for * the TDP MMU itself, which is held until the root is invalidated and - * is ultimately put by tdp_mmu_zap_root_work(). + * is ultimately put by kvm_tdp_mmu_zap_invalidated_roots(). */ refcount_set(&root->tdp_mmu_root_count, 2); Paolo
> + KVM_BUG_ON(!root->role.invalid, kvm);
| |