diff options
-rw-r--r-- | arch/x86/kvm/mmu.c | 5 |
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); |