[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20221012181702.3663607-12-seanjc@google.com>
Date: Wed, 12 Oct 2022 18:17:02 +0000
From: Sean Christopherson <seanjc@...gle.com>
To: Sean Christopherson <seanjc@...gle.com>,
Paolo Bonzini <pbonzini@...hat.com>
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
David Matlack <dmatlack@...gle.com>,
Isaku Yamahata <isaku.yamahata@...el.com>
Subject: [PATCH v4 11/11] KVM: x86/mmu: Stop needlessly making MMU pages
available for TDP MMU
From: David Matlack <dmatlack@...gle.com>
Stop calling make_mmu_pages_available() when handling TDP MMU faults and
when allocating TDP MMU roots. The TDP MMU does not participate in the
"available MMU pages" tracking and limiting so calling this function is
unnecessary work when handling TDP MMU faults.
Signed-off-by: David Matlack <dmatlack@...gle.com>
[sean: apply to root allocation too]
Signed-off-by: Sean Christopherson <seanjc@...gle.com>
---
arch/x86/kvm/mmu/mmu.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index a5ba7b41263d..0fcf4560f4d8 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -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())
--
2.38.0.rc1.362.ged0d419d3c-goog
Powered by blists - more mailing lists