aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/mmu.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 4a02dee1f2b5..d7aebafffdfe 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2094,6 +2094,7 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
2094 root_gfn = 0; 2094 root_gfn = 0;
2095 } 2095 }
2096 spin_lock(&vcpu->kvm->mmu_lock); 2096 spin_lock(&vcpu->kvm->mmu_lock);
2097 kvm_mmu_free_some_pages(vcpu->kvm);
2097 sp = kvm_mmu_get_page(vcpu, root_gfn, 0, 2098 sp = kvm_mmu_get_page(vcpu, root_gfn, 0,
2098 PT64_ROOT_LEVEL, direct, 2099 PT64_ROOT_LEVEL, direct,
2099 ACC_ALL, NULL); 2100 ACC_ALL, NULL);
@@ -2124,6 +2125,7 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
2124 root_gfn = i << 30; 2125 root_gfn = i << 30;
2125 } 2126 }
2126 spin_lock(&vcpu->kvm->mmu_lock); 2127 spin_lock(&vcpu->kvm->mmu_lock);
2128 kvm_mmu_free_some_pages(vcpu->kvm);
2127 sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30, 2129 sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30,
2128 PT32_ROOT_LEVEL, direct, 2130 PT32_ROOT_LEVEL, direct,
2129 ACC_ALL, NULL); 2131 ACC_ALL, NULL);
@@ -2496,9 +2498,6 @@ int kvm_mmu_load(struct kvm_vcpu *vcpu)
2496 r = mmu_topup_memory_caches(vcpu); 2498 r = mmu_topup_memory_caches(vcpu);
2497 if (r) 2499 if (r)
2498 goto out; 2500 goto out;
2499 spin_lock(&vcpu->kvm->mmu_lock);
2500 kvm_mmu_free_some_pages(vcpu);
2501 spin_unlock(&vcpu->kvm->mmu_lock);
2502 r = mmu_alloc_roots(vcpu); 2501 r = mmu_alloc_roots(vcpu);
2503 spin_lock(&vcpu->kvm->mmu_lock); 2502 spin_lock(&vcpu->kvm->mmu_lock);
2504 mmu_sync_roots(vcpu); 2503 mmu_sync_roots(vcpu);