]> git.dujemihanovic.xyz Git - linux.git/commitdiff
kvm/x86: Fix 'lpages' kvm stat for TDM MMU
authorShahin, Md Shahadat Hossain <shahinmd@amazon.de>
Fri, 30 Apr 2021 11:52:31 +0000 (11:52 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 3 May 2021 15:25:34 +0000 (11:25 -0400)
Large pages not being created properly may result in increased memory
access time. The 'lpages' kvm stat used to keep track of the current
number of large pages in the system, but with TDP MMU enabled the stat
is not showing the correct number.

This patch extends the lpages counter to cover the TDP case.

Signed-off-by: Md Shahadat Hossain Shahin <shahinmd@amazon.de>
Cc: Bartosz Szczepanek <bsz@amazon.de>
Message-Id: <1619783551459.35424@amazon.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/tdp_mmu.c

index 3c8284841bed47cda5adf3fedc5e6c36736b9d44..c743894fe0b7c008ba1d392341c041cf9d117eb7 100644 (file)
@@ -444,6 +444,13 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn,
 
        trace_kvm_tdp_mmu_spte_changed(as_id, gfn, level, old_spte, new_spte);
 
+       if (is_large_pte(old_spte) != is_large_pte(new_spte)) {
+               if (is_large_pte(old_spte))
+                       atomic64_sub(1, (atomic64_t*)&kvm->stat.lpages);
+               else
+                       atomic64_add(1, (atomic64_t*)&kvm->stat.lpages);
+       }
+
        /*
         * The only times a SPTE should be changed from a non-present to
         * non-present state is when an MMIO entry is installed/modified/