Messages in this thread Patch in this message | | | Date | Fri, 24 Jun 2022 23:27:35 +0000 | Subject | [PATCH 4/4] KVM: x86/mmu: Topup pte_list_desc cache iff VM is using rmaps | From | Sean Christopherson <> |
| |
Topup the per-vCPU pte_list_desc caches if and only if the VM is using rmaps, i.e. KVM is not using the TDP MMU or KVM is shadowing a nested TDP MMU. This avoids wasting 1280 bytes per vCPU when KVM is using the TDP MMU and L1 is not utilizing nested TDP.
Signed-off-by: Sean Christopherson <seanjc@google.com> --- arch/x86/kvm/mmu/mmu.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 2db328d28b7b..fcbdd780075f 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -646,11 +646,13 @@ static int mmu_topup_memory_caches(struct kvm_vcpu *vcpu, bool maybe_indirect) { int r; - /* 1 rmap, 1 parent PTE per level, and the prefetched rmaps. */ - r = kvm_mmu_topup_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache, - 1 + PT64_ROOT_MAX_LEVEL + PTE_PREFETCH_NUM); - if (r) - return r; + if (kvm_memslots_have_rmaps(vcpu->kvm)) { + /* 1 rmap, 1 parent PTE per level, and the prefetched rmaps. */ + r = kvm_mmu_topup_memory_cache(&vcpu->arch.mmu_pte_list_desc_cache, + 1 + PT64_ROOT_MAX_LEVEL + PTE_PREFETCH_NUM); + if (r) + return r; + } r = kvm_mmu_topup_memory_cache(&vcpu->arch.mmu_shadow_page_cache, PT64_ROOT_MAX_LEVEL); if (r) -- 2.37.0.rc0.161.g10f37bed90-goog
| |