Hi Paolo, I'm just going to fix this issue, and found that you have done this ;-) Please feel free to add: Reviewed-by: Keqian Zhu <zhukeqian1@xxxxxxxxxx> Thanks, Keqian On 2021/4/2 20:17, Paolo Bonzini wrote: > When using manual protection of dirty pages, it is not necessary > to protect nested page tables down to the 4K level; instead KVM > can protect only hugepages in order to split them lazily, and > delay write protection at 4K-granularity until KVM_CLEAR_DIRTY_LOG. > This was overlooked in the TDP MMU, so do it there as well. > > Fixes: a6a0b05da9f37 ("kvm: x86/mmu: Support dirty logging for the TDP MMU") > Cc: Ben Gardon <bgardon@xxxxxxxxxx> > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > arch/x86/kvm/mmu/mmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index efb41f31e80a..0d92a269c5fa 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -5538,7 +5538,7 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, > flush = slot_handle_level(kvm, memslot, slot_rmap_write_protect, > start_level, KVM_MAX_HUGEPAGE_LEVEL, false); > if (is_tdp_mmu_enabled(kvm)) > - flush |= kvm_tdp_mmu_wrprot_slot(kvm, memslot, PG_LEVEL_4K); > + flush |= kvm_tdp_mmu_wrprot_slot(kvm, memslot, start_level); > write_unlock(&kvm->mmu_lock); > > /* >