@@ -3569,9 +3569,12 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu)
int r;
write_lock(&vcpu->kvm->mmu_lock);
- r = make_mmu_pages_available(vcpu);
- if (r < 0)
- goto out_unlock;
+
+ if (!is_tdp_mmu_enabled()) {
+ r = make_mmu_pages_available(vcpu);
+ if (r < 0)
+ goto out_unlock;
+ }
if (is_tdp_mmu_enabled()) {
root = kvm_tdp_mmu_get_vcpu_root_hpa(vcpu);
@@ -4289,14 +4292,15 @@ static int direct_page_fault(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault
if (is_page_fault_stale(vcpu, fault))
goto out_unlock;
- r = make_mmu_pages_available(vcpu);
- if (r)
- goto out_unlock;
-
- if (is_tdp_mmu_enabled())
+ if (is_tdp_mmu_enabled()) {
r = kvm_tdp_mmu_map(vcpu, fault);
- else
+ } else {
+ r = make_mmu_pages_available(vcpu);
+ if (r)
+ goto out_unlock;
+
r = __direct_map(vcpu, fault);
+ }
out_unlock:
if (is_tdp_mmu_enabled())