return kvm_gfn_direct_bits(kvm);
 }
 
-static inline bool kvm_mmu_page_ad_need_write_protect(struct kvm_mmu_page *sp)
+static inline bool kvm_mmu_page_ad_need_write_protect(struct kvm *kvm,
+                                                     struct kvm_mmu_page *sp)
 {
        /*
         * When using the EPT page-modification log, the GPAs in the CPU dirty
 
 
        if (sp->role.ad_disabled)
                spte |= SPTE_TDP_AD_DISABLED;
-       else if (kvm_mmu_page_ad_need_write_protect(sp))
+       else if (kvm_mmu_page_ad_need_write_protect(vcpu->kvm, sp))
                spte |= SPTE_TDP_AD_WRPROT_ONLY;
 
        spte |= shadow_present_mask;
 
        }
 }
 
-static bool tdp_mmu_need_write_protect(struct kvm_mmu_page *sp)
+static bool tdp_mmu_need_write_protect(struct kvm *kvm, struct kvm_mmu_page *sp)
 {
        /*
         * All TDP MMU shadow pages share the same role as their root, aside
         * from level, so it is valid to key off any shadow page to determine if
         * write protection is needed for an entire tree.
         */
-       return kvm_mmu_page_ad_need_write_protect(sp) || !kvm_ad_enabled;
+       return kvm_mmu_page_ad_need_write_protect(kvm, sp) || !kvm_ad_enabled;
 }
 
 static void clear_dirty_gfn_range(struct kvm *kvm, struct kvm_mmu_page *root,
                                  gfn_t start, gfn_t end)
 {
-       const u64 dbit = tdp_mmu_need_write_protect(root) ? PT_WRITABLE_MASK :
-                                                           shadow_dirty_mask;
+       const u64 dbit = tdp_mmu_need_write_protect(kvm, root) ?
+                        PT_WRITABLE_MASK : shadow_dirty_mask;
        struct tdp_iter iter;
 
        rcu_read_lock();
 static void clear_dirty_pt_masked(struct kvm *kvm, struct kvm_mmu_page *root,
                                  gfn_t gfn, unsigned long mask, bool wrprot)
 {
-       const u64 dbit = (wrprot || tdp_mmu_need_write_protect(root)) ? PT_WRITABLE_MASK :
-                                                                       shadow_dirty_mask;
+       const u64 dbit = (wrprot || tdp_mmu_need_write_protect(kvm, root)) ?
+                         PT_WRITABLE_MASK : shadow_dirty_mask;
        struct tdp_iter iter;
 
        lockdep_assert_held_write(&kvm->mmu_lock);