Reviewed-by: Yan Zhao <yan.y.zhao@xxxxxxxxx> On Fri, May 12, 2023 at 05:35:44PM -0700, Sean Christopherson wrote: > Call kvm_mmu_zap_all_fast() directly when flushing a memslot instead of > bouncing through the page-track mechanism. KVM (unfortunately) needs to > zap and flush all page tables on memslot DELETE/MOVE irrespective of > whether KVM is shadowing guest page tables. > > This will allow changing KVM to register a page-track notifier on the > first shadow root allocation, and will also allow deleting the misguided > kvm_page_track_flush_slot() hook itself once KVM-GT also moves to a > different method for reacting to memslot changes. > > No functional change intended. > > Cc: Yan Zhao <yan.y.zhao@xxxxxxxxx> > Link: https://lore.kernel.org/r/20221110014821.1548347-2-seanjc@xxxxxxxxxx > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > --- > arch/x86/kvm/mmu/mmu.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 2e4476d38377..23a79723031b 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -6184,13 +6184,6 @@ static bool kvm_has_zapped_obsolete_pages(struct kvm *kvm) > return unlikely(!list_empty_careful(&kvm->arch.zapped_obsolete_pages)); > } > > -static void kvm_mmu_invalidate_zap_pages_in_memslot(struct kvm *kvm, > - struct kvm_memory_slot *slot, > - struct kvm_page_track_notifier_node *node) > -{ > - kvm_mmu_zap_all_fast(kvm); > -} > - > int kvm_mmu_init_vm(struct kvm *kvm) > { > struct kvm_page_track_notifier_node *node = &kvm->arch.mmu_sp_tracker; > @@ -6208,7 +6201,6 @@ int kvm_mmu_init_vm(struct kvm *kvm) > } > > node->track_write = kvm_mmu_pte_write; > - node->track_flush_slot = kvm_mmu_invalidate_zap_pages_in_memslot; > kvm_page_track_register_notifier(kvm, node); > > kvm->arch.split_page_header_cache.kmem_cache = mmu_page_header_cache; > @@ -6750,6 +6742,8 @@ void kvm_arch_flush_shadow_all(struct kvm *kvm) > void kvm_arch_flush_shadow_memslot(struct kvm *kvm, > struct kvm_memory_slot *slot) > { > + kvm_mmu_zap_all_fast(kvm); > + > kvm_page_track_flush_slot(kvm, slot); > } > > -- > 2.40.1.606.ga4b1b128d6-goog >