KVM: MMU: Infer shadow root level in direct_map()
authorAvi Kivity <avi@qumranet.com>
Tue, 26 Aug 2008 13:16:08 +0000 (16:16 +0300)
committerAvi Kivity <avi@qumranet.com>
Wed, 15 Oct 2008 08:15:22 +0000 (10:15 +0200)
In all cases the shadow root level is available in mmu.shadow_root_level,
so there is no need to pass it as a parameter.

Signed-off-by: Avi Kivity <avi@qumranet.com>
arch/x86/kvm/mmu.c

index 3ee856f..72f739a 100644 (file)
@@ -1227,11 +1227,11 @@ static void nonpaging_new_cr3(struct kvm_vcpu *vcpu)
 }
 
 static int __direct_map(struct kvm_vcpu *vcpu, gpa_t v, int write,
-                          int largepage, gfn_t gfn, pfn_t pfn,
-                          int level)
+                       int largepage, gfn_t gfn, pfn_t pfn)
 {
        hpa_t table_addr = vcpu->arch.mmu.root_hpa;
        int pt_write = 0;
+       int level = vcpu->arch.mmu.shadow_root_level;
 
        for (; ; level--) {
                u32 index = PT64_INDEX(v, level);
@@ -1299,8 +1299,7 @@ static int nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, int write, gfn_t gfn)
        if (mmu_notifier_retry(vcpu, mmu_seq))
                goto out_unlock;
        kvm_mmu_free_some_pages(vcpu);
-       r = __direct_map(vcpu, v, write, largepage, gfn, pfn,
-                        PT32E_ROOT_LEVEL);
+       r = __direct_map(vcpu, v, write, largepage, gfn, pfn);
        spin_unlock(&vcpu->kvm->mmu_lock);
 
 
@@ -1455,7 +1454,7 @@ static int tdp_page_fault(struct kvm_vcpu *vcpu, gva_t gpa,
                goto out_unlock;
        kvm_mmu_free_some_pages(vcpu);
        r = __direct_map(vcpu, gpa, error_code & PFERR_WRITE_MASK,
-                        largepage, gfn, pfn, kvm_x86_ops->get_tdp_level());
+                        largepage, gfn, pfn);
        spin_unlock(&vcpu->kvm->mmu_lock);
 
        return r;