if (fault->nx_huge_page_workaround_enabled)
                        disallowed_hugepage_adjust(fault, *it.sptep, it.level);
 
-               base_gfn = fault->gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1);
+               base_gfn = gfn_round_for_level(fault->gfn, it.level);
                if (it.level == fault->goal_level)
                        break;
 
        if (shadow_memtype_mask && kvm_arch_has_noncoherent_dma(vcpu->kvm)) {
                for ( ; fault->max_level > PG_LEVEL_4K; --fault->max_level) {
                        int page_num = KVM_PAGES_PER_HPAGE(fault->max_level);
-                       gfn_t base = fault->gfn & ~(page_num - 1);
+                       gfn_t base = gfn_round_for_level(fault->gfn,
+                                                        fault->max_level);
 
                        if (kvm_mtrr_check_gfn_range_consistency(vcpu, base, page_num))
                                break;
 
        return kvm_x86_ops.cpu_dirty_log_size && sp->role.guest_mode;
 }
 
+static inline gfn_t gfn_round_for_level(gfn_t gfn, int level)
+{
+       return gfn & -KVM_PAGES_PER_HPAGE(level);
+}
+
 int mmu_try_to_unsync_pages(struct kvm *kvm, const struct kvm_memory_slot *slot,
                            gfn_t gfn, bool can_unsync, bool prefetch);
 
 
                if (fault->nx_huge_page_workaround_enabled)
                        disallowed_hugepage_adjust(fault, *it.sptep, it.level);
 
-               base_gfn = fault->gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1);
+               base_gfn = gfn_round_for_level(fault->gfn, it.level);
                if (it.level == fault->goal_level)
                        break;
 
 
        iter->old_spte = kvm_tdp_mmu_read_spte(iter->sptep);
 }
 
-static gfn_t round_gfn_for_level(gfn_t gfn, int level)
-{
-       return gfn & -KVM_PAGES_PER_HPAGE(level);
-}
-
 /*
  * Return the TDP iterator to the root PT and allow it to continue its
  * traversal over the paging structure from there.
        iter->yielded_gfn = iter->next_last_level_gfn;
        iter->level = iter->root_level;
 
-       iter->gfn = round_gfn_for_level(iter->next_last_level_gfn, iter->level);
+       iter->gfn = gfn_round_for_level(iter->next_last_level_gfn, iter->level);
        tdp_iter_refresh_sptep(iter);
 
        iter->valid = true;
 
        iter->level--;
        iter->pt_path[iter->level - 1] = child_pt;
-       iter->gfn = round_gfn_for_level(iter->next_last_level_gfn, iter->level);
+       iter->gfn = gfn_round_for_level(iter->next_last_level_gfn, iter->level);
        tdp_iter_refresh_sptep(iter);
 
        return true;
                return false;
 
        iter->level++;
-       iter->gfn = round_gfn_for_level(iter->gfn, iter->level);
+       iter->gfn = gfn_round_for_level(iter->gfn, iter->level);
        tdp_iter_refresh_sptep(iter);
 
        return true;