On Thu, Apr 29, 2021, Shahin, Md Shahadat Hossain wrote: > 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@xxxxxxxxx> > Cc: Bartosz Szczepanek <bsz@xxxxxxxxx> > --- > arch/x86/kvm/mmu/tdp_mmu.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c > index 34207b874886..1e2a3cb33568 100644 > --- a/arch/x86/kvm/mmu/tdp_mmu.c > +++ b/arch/x86/kvm/mmu/tdp_mmu.c > @@ -425,6 +425,12 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn, > > if (old_spte == new_spte) > return; > + > + if (is_large_pte(old_spte)) > + --kvm->stat.lpages; > + > + if (is_large_pte(new_spte)) > + ++kvm->stat.lpages; Hrm, kvm->stat.lpages could get corrupted when __handle_changed_spte() is called under read lock, e.g. if multiple vCPUs are faulting in memory.