Skip to content

Commit

Permalink
KVM: x86/mmu: Remove obsolete gfn restoration in FNAME(fetch)
Browse files Browse the repository at this point in the history
Remove logic to retrieve the original gfn now that HugeTLB mappings are
are identified in FNAME(fetch), i.e. FNAME(page_fault) no longer adjusts
the level or gfn.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
Sean Christopherson authored and Paolo Bonzini committed Jan 27, 2020
1 parent 83f06fa commit 09c4453
Showing 1 changed file with 3 additions and 10 deletions.
13 changes: 3 additions & 10 deletions arch/x86/kvm/mmu/paging_tmpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr,
struct kvm_shadow_walk_iterator it;
unsigned direct_access, access = gw->pt_access;
int top_level, hlevel, ret;
gfn_t gfn, base_gfn;
gfn_t base_gfn = gw->gfn;

direct_access = gw->pte_access;

Expand Down Expand Up @@ -681,13 +681,6 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr,
link_shadow_page(vcpu, it.sptep, sp);
}

/*
* FNAME(page_fault) might have clobbered the bottom bits of
* gw->gfn, restore them from the virtual address.
*/
gfn = gw->gfn | ((addr & PT_LVL_OFFSET_MASK(gw->level)) >> PAGE_SHIFT);
base_gfn = gfn;

hlevel = kvm_mmu_hugepage_adjust(vcpu, gw->gfn, max_level, &pfn);

trace_kvm_mmu_spte_requested(addr, gw->level, pfn);
Expand All @@ -699,9 +692,9 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr,
* We cannot overwrite existing page tables with an NX
* large page, as the leaf could be executable.
*/
disallowed_hugepage_adjust(it, gfn, &pfn, &hlevel);
disallowed_hugepage_adjust(it, gw->gfn, &pfn, &hlevel);

base_gfn = gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1);
base_gfn = gw->gfn & ~(KVM_PAGES_PER_HPAGE(it.level) - 1);
if (it.level == hlevel)
break;

Expand Down

0 comments on commit 09c4453

Please sign in to comment.