From: Mingwei Zhang <mizhang-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
To: Yosry Ahmed <yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
Zefan Li <lizefan.x-EC8Uxl6Npydl57MIdRCFDg@public.gmane.org>,
Marc Zyngier <maz-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
James Morse <james.morse-5wv7dgnIgG8@public.gmane.org>,
Alexandru Elisei <alexandru.elisei-5wv7dgnIgG8@public.gmane.org>,
Suzuki K Poulose <suzuki.poulose-5wv7dgnIgG8@public.gmane.org>,
Paolo Bonzini <pbonzini-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Sean Christopherson
<seanjc-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Vitaly Kuznetsov
<vkuznets-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Wanpeng Li <wanpengli-1Nz4purKYjRBDgjK7y7TUQ@public.gmane.org>,
Jim Mattson <jmattson-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
Michal Hocko <mhocko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Roman Gushchin
<roman.gushchin-fxUVXftIFDnyG1zEObXtfA@public.gmane.org>,
Shakeel Butt <shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Oliver Upton <oupton-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v4 3/4] KVM: x86/mmu: count KVM mmu usage in secondary pagetable stats.
Date: Fri, 22 Jul 2022 20:58:59 +0000 [thread overview]
Message-ID: <YtsPk5+hZNMEwT0c@google.com> (raw)
In-Reply-To: <20220429201131.3397875-4-yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
On Fri, Apr 29, 2022, Yosry Ahmed wrote:
> Count the pages used by KVM mmu on x86 for in secondary pagetable stats.
>
> For the legacy mmu, accounting pagetable stats is combined KVM's
> existing for mmu pages in newly introduced kvm_[un]account_mmu_page()
> helpers.
>
> For tdp mmu, introduce new tdp_[un]account_mmu_page() helpers. That
> combines accounting pagetable stats with the tdp_mmu_pages counter
> accounting.
>
> tdp_mmu_pages counter introduced in this series [1]. This patch was
> rebased on top of the first two patches in that series.
>
> [1]https://lore.kernel.org/lkml/20220401063636.2414200-1-mizhang-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org/
>
> Signed-off-by: Yosry Ahmed <yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
> ---
It looks like there are two metrics for mmu in x86: one for shadow mmu
and the other for TDP mmu. Is there any plan to merge them together?
> arch/x86/kvm/mmu/mmu.c | 16 ++++++++++++++--
> arch/x86/kvm/mmu/tdp_mmu.c | 16 ++++++++++++++--
> 2 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 78d8e1d8fb99..e5b0e826445d 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -1679,6 +1679,18 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, long nr)
> percpu_counter_add(&kvm_total_used_mmu_pages, nr);
> }
>
> +static void kvm_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, +1);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void kvm_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> static void kvm_mmu_free_page(struct kvm_mmu_page *sp)
> {
> MMU_WARN_ON(!is_empty_shadow_page(sp->spt));
> @@ -1734,7 +1746,7 @@ static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, int direct
> */
> sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen;
> list_add(&sp->link, &vcpu->kvm->arch.active_mmu_pages);
> - kvm_mod_used_mmu_pages(vcpu->kvm, +1);
> + kvm_account_mmu_page(vcpu->kvm, sp);
> return sp;
> }
>
> @@ -2363,7 +2375,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm,
> list_add(&sp->link, invalid_list);
> else
> list_move(&sp->link, invalid_list);
> - kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_unaccount_mmu_page(kvm, sp);
> } else {
> /*
> * Remove the active root from the active page list, the root
> diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c
> index 3456277ade18..6295c4da5dee 100644
> --- a/arch/x86/kvm/mmu/tdp_mmu.c
> +++ b/arch/x86/kvm/mmu/tdp_mmu.c
> @@ -371,6 +371,18 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> }
> }
>
> +static void tdp_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void tdp_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> /**
> * tdp_mmu_unlink_sp() - Remove a shadow page from the list of used pages
> *
> @@ -383,7 +395,7 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> static void tdp_mmu_unlink_sp(struct kvm *kvm, struct kvm_mmu_page *sp,
> bool shared)
> {
> - atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + tdp_unaccount_mmu_page(kvm, sp);
>
> if (!sp->lpage_disallowed)
> return;
> @@ -1121,7 +1133,7 @@ static int tdp_mmu_link_sp(struct kvm *kvm, struct tdp_iter *iter,
> tdp_mmu_set_spte(kvm, iter, spte);
> }
>
> - atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + tdp_account_mmu_page(kvm, sp);
>
> return 0;
> }
> --
> 2.36.0.464.gb9c8b46e94-goog
>
WARNING: multiple messages have this Message-ID (diff)
From: Mingwei Zhang <mizhang@google.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Wanpeng Li <wanpengli@tencent.com>,
kvm@vger.kernel.org, Roman Gushchin <roman.gushchin@linux.dev>,
Michal Hocko <mhocko@kernel.org>,
linux-mm@kvack.org, Zefan Li <lizefan.x@bytedance.com>,
kvmarm@lists.cs.columbia.edu, Marc Zyngier <maz@kernel.org>,
Joerg Roedel <joro@8bytes.org>,
Shakeel Butt <shakeelb@google.com>,
cgroups@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
linux-arm-kernel@lists.infradead.org,
Jim Mattson <jmattson@google.com>,
linux-kernel@vger.kernel.org,
Johannes Weiner <hannes@cmpxchg.org>, Tejun Heo <tj@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>
Subject: Re: [PATCH v4 3/4] KVM: x86/mmu: count KVM mmu usage in secondary pagetable stats.
Date: Fri, 22 Jul 2022 20:58:59 +0000 [thread overview]
Message-ID: <YtsPk5+hZNMEwT0c@google.com> (raw)
In-Reply-To: <20220429201131.3397875-4-yosryahmed@google.com>
On Fri, Apr 29, 2022, Yosry Ahmed wrote:
> Count the pages used by KVM mmu on x86 for in secondary pagetable stats.
>
> For the legacy mmu, accounting pagetable stats is combined KVM's
> existing for mmu pages in newly introduced kvm_[un]account_mmu_page()
> helpers.
>
> For tdp mmu, introduce new tdp_[un]account_mmu_page() helpers. That
> combines accounting pagetable stats with the tdp_mmu_pages counter
> accounting.
>
> tdp_mmu_pages counter introduced in this series [1]. This patch was
> rebased on top of the first two patches in that series.
>
> [1]https://lore.kernel.org/lkml/20220401063636.2414200-1-mizhang@google.com/
>
> Signed-off-by: Yosry Ahmed <yosryahmed@google.com>
> ---
It looks like there are two metrics for mmu in x86: one for shadow mmu
and the other for TDP mmu. Is there any plan to merge them together?
> arch/x86/kvm/mmu/mmu.c | 16 ++++++++++++++--
> arch/x86/kvm/mmu/tdp_mmu.c | 16 ++++++++++++++--
> 2 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 78d8e1d8fb99..e5b0e826445d 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -1679,6 +1679,18 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, long nr)
> percpu_counter_add(&kvm_total_used_mmu_pages, nr);
> }
>
> +static void kvm_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, +1);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void kvm_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> static void kvm_mmu_free_page(struct kvm_mmu_page *sp)
> {
> MMU_WARN_ON(!is_empty_shadow_page(sp->spt));
> @@ -1734,7 +1746,7 @@ static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, int direct
> */
> sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen;
> list_add(&sp->link, &vcpu->kvm->arch.active_mmu_pages);
> - kvm_mod_used_mmu_pages(vcpu->kvm, +1);
> + kvm_account_mmu_page(vcpu->kvm, sp);
> return sp;
> }
>
> @@ -2363,7 +2375,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm,
> list_add(&sp->link, invalid_list);
> else
> list_move(&sp->link, invalid_list);
> - kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_unaccount_mmu_page(kvm, sp);
> } else {
> /*
> * Remove the active root from the active page list, the root
> diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c
> index 3456277ade18..6295c4da5dee 100644
> --- a/arch/x86/kvm/mmu/tdp_mmu.c
> +++ b/arch/x86/kvm/mmu/tdp_mmu.c
> @@ -371,6 +371,18 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> }
> }
>
> +static void tdp_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void tdp_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> /**
> * tdp_mmu_unlink_sp() - Remove a shadow page from the list of used pages
> *
> @@ -383,7 +395,7 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> static void tdp_mmu_unlink_sp(struct kvm *kvm, struct kvm_mmu_page *sp,
> bool shared)
> {
> - atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + tdp_unaccount_mmu_page(kvm, sp);
>
> if (!sp->lpage_disallowed)
> return;
> @@ -1121,7 +1133,7 @@ static int tdp_mmu_link_sp(struct kvm *kvm, struct tdp_iter *iter,
> tdp_mmu_set_spte(kvm, iter, spte);
> }
>
> - atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + tdp_account_mmu_page(kvm, sp);
>
> return 0;
> }
> --
> 2.36.0.464.gb9c8b46e94-goog
>
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Mingwei Zhang <mizhang@google.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Tejun Heo <tj@kernel.org>, Johannes Weiner <hannes@cmpxchg.org>,
Zefan Li <lizefan.x@bytedance.com>, Marc Zyngier <maz@kernel.org>,
James Morse <james.morse@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
Andrew Morton <akpm@linux-foundation.org>,
Michal Hocko <mhocko@kernel.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Shakeel Butt <shakeelb@google.com>,
Oliver Upton <oupton@google.com>,
cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v4 3/4] KVM: x86/mmu: count KVM mmu usage in secondary pagetable stats.
Date: Fri, 22 Jul 2022 20:58:59 +0000 [thread overview]
Message-ID: <YtsPk5+hZNMEwT0c@google.com> (raw)
In-Reply-To: <20220429201131.3397875-4-yosryahmed@google.com>
On Fri, Apr 29, 2022, Yosry Ahmed wrote:
> Count the pages used by KVM mmu on x86 for in secondary pagetable stats.
>
> For the legacy mmu, accounting pagetable stats is combined KVM's
> existing for mmu pages in newly introduced kvm_[un]account_mmu_page()
> helpers.
>
> For tdp mmu, introduce new tdp_[un]account_mmu_page() helpers. That
> combines accounting pagetable stats with the tdp_mmu_pages counter
> accounting.
>
> tdp_mmu_pages counter introduced in this series [1]. This patch was
> rebased on top of the first two patches in that series.
>
> [1]https://lore.kernel.org/lkml/20220401063636.2414200-1-mizhang@google.com/
>
> Signed-off-by: Yosry Ahmed <yosryahmed@google.com>
> ---
It looks like there are two metrics for mmu in x86: one for shadow mmu
and the other for TDP mmu. Is there any plan to merge them together?
> arch/x86/kvm/mmu/mmu.c | 16 ++++++++++++++--
> arch/x86/kvm/mmu/tdp_mmu.c | 16 ++++++++++++++--
> 2 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 78d8e1d8fb99..e5b0e826445d 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -1679,6 +1679,18 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, long nr)
> percpu_counter_add(&kvm_total_used_mmu_pages, nr);
> }
>
> +static void kvm_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, +1);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void kvm_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> static void kvm_mmu_free_page(struct kvm_mmu_page *sp)
> {
> MMU_WARN_ON(!is_empty_shadow_page(sp->spt));
> @@ -1734,7 +1746,7 @@ static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, int direct
> */
> sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen;
> list_add(&sp->link, &vcpu->kvm->arch.active_mmu_pages);
> - kvm_mod_used_mmu_pages(vcpu->kvm, +1);
> + kvm_account_mmu_page(vcpu->kvm, sp);
> return sp;
> }
>
> @@ -2363,7 +2375,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm,
> list_add(&sp->link, invalid_list);
> else
> list_move(&sp->link, invalid_list);
> - kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_unaccount_mmu_page(kvm, sp);
> } else {
> /*
> * Remove the active root from the active page list, the root
> diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c
> index 3456277ade18..6295c4da5dee 100644
> --- a/arch/x86/kvm/mmu/tdp_mmu.c
> +++ b/arch/x86/kvm/mmu/tdp_mmu.c
> @@ -371,6 +371,18 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> }
> }
>
> +static void tdp_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void tdp_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> /**
> * tdp_mmu_unlink_sp() - Remove a shadow page from the list of used pages
> *
> @@ -383,7 +395,7 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> static void tdp_mmu_unlink_sp(struct kvm *kvm, struct kvm_mmu_page *sp,
> bool shared)
> {
> - atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + tdp_unaccount_mmu_page(kvm, sp);
>
> if (!sp->lpage_disallowed)
> return;
> @@ -1121,7 +1133,7 @@ static int tdp_mmu_link_sp(struct kvm *kvm, struct tdp_iter *iter,
> tdp_mmu_set_spte(kvm, iter, spte);
> }
>
> - atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + tdp_account_mmu_page(kvm, sp);
>
> return 0;
> }
> --
> 2.36.0.464.gb9c8b46e94-goog
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Mingwei Zhang <mizhang@google.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Tejun Heo <tj@kernel.org>, Johannes Weiner <hannes@cmpxchg.org>,
Zefan Li <lizefan.x@bytedance.com>, Marc Zyngier <maz@kernel.org>,
James Morse <james.morse@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
Andrew Morton <akpm@linux-foundation.org>,
Michal Hocko <mhocko@kernel.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Shakeel Butt <shakeelb@google.com>,
Oliver Upton <oupton@google.com>,
cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v4 3/4] KVM: x86/mmu: count KVM mmu usage in secondary pagetable stats.
Date: Fri, 22 Jul 2022 20:58:59 +0000 [thread overview]
Message-ID: <YtsPk5+hZNMEwT0c@google.com> (raw)
In-Reply-To: <20220429201131.3397875-4-yosryahmed@google.com>
On Fri, Apr 29, 2022, Yosry Ahmed wrote:
> Count the pages used by KVM mmu on x86 for in secondary pagetable stats.
>
> For the legacy mmu, accounting pagetable stats is combined KVM's
> existing for mmu pages in newly introduced kvm_[un]account_mmu_page()
> helpers.
>
> For tdp mmu, introduce new tdp_[un]account_mmu_page() helpers. That
> combines accounting pagetable stats with the tdp_mmu_pages counter
> accounting.
>
> tdp_mmu_pages counter introduced in this series [1]. This patch was
> rebased on top of the first two patches in that series.
>
> [1]https://lore.kernel.org/lkml/20220401063636.2414200-1-mizhang@google.com/
>
> Signed-off-by: Yosry Ahmed <yosryahmed@google.com>
> ---
It looks like there are two metrics for mmu in x86: one for shadow mmu
and the other for TDP mmu. Is there any plan to merge them together?
> arch/x86/kvm/mmu/mmu.c | 16 ++++++++++++++--
> arch/x86/kvm/mmu/tdp_mmu.c | 16 ++++++++++++++--
> 2 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 78d8e1d8fb99..e5b0e826445d 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -1679,6 +1679,18 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, long nr)
> percpu_counter_add(&kvm_total_used_mmu_pages, nr);
> }
>
> +static void kvm_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, +1);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void kvm_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> static void kvm_mmu_free_page(struct kvm_mmu_page *sp)
> {
> MMU_WARN_ON(!is_empty_shadow_page(sp->spt));
> @@ -1734,7 +1746,7 @@ static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, int direct
> */
> sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen;
> list_add(&sp->link, &vcpu->kvm->arch.active_mmu_pages);
> - kvm_mod_used_mmu_pages(vcpu->kvm, +1);
> + kvm_account_mmu_page(vcpu->kvm, sp);
> return sp;
> }
>
> @@ -2363,7 +2375,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm,
> list_add(&sp->link, invalid_list);
> else
> list_move(&sp->link, invalid_list);
> - kvm_mod_used_mmu_pages(kvm, -1);
> + kvm_unaccount_mmu_page(kvm, sp);
> } else {
> /*
> * Remove the active root from the active page list, the root
> diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c
> index 3456277ade18..6295c4da5dee 100644
> --- a/arch/x86/kvm/mmu/tdp_mmu.c
> +++ b/arch/x86/kvm/mmu/tdp_mmu.c
> @@ -371,6 +371,18 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> }
> }
>
> +static void tdp_account_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, +1);
> +}
> +
> +static void tdp_unaccount_mmu_page(struct kvm *kvm, struct kvm_mmu_page *sp)
> +{
> + atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + kvm_account_pgtable_pages((void *)sp->spt, -1);
> +}
> +
> /**
> * tdp_mmu_unlink_sp() - Remove a shadow page from the list of used pages
> *
> @@ -383,7 +395,7 @@ static void handle_changed_spte_dirty_log(struct kvm *kvm, int as_id, gfn_t gfn,
> static void tdp_mmu_unlink_sp(struct kvm *kvm, struct kvm_mmu_page *sp,
> bool shared)
> {
> - atomic64_dec(&kvm->arch.tdp_mmu_pages);
> + tdp_unaccount_mmu_page(kvm, sp);
>
> if (!sp->lpage_disallowed)
> return;
> @@ -1121,7 +1133,7 @@ static int tdp_mmu_link_sp(struct kvm *kvm, struct tdp_iter *iter,
> tdp_mmu_set_spte(kvm, iter, spte);
> }
>
> - atomic64_inc(&kvm->arch.tdp_mmu_pages);
> + tdp_account_mmu_page(kvm, sp);
>
> return 0;
> }
> --
> 2.36.0.464.gb9c8b46e94-goog
>
next prev parent reply other threads:[~2022-07-22 20:58 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-29 20:11 [PATCH v4 0/4] KVM: mm: count KVM mmu usage in memory stats Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
[not found] ` <20220429201131.3397875-1-yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-29 20:11 ` [PATCH v4 1/4] mm: add NR_SECONDARY_PAGETABLE to count secondary page table uses Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-05-02 10:01 ` Marc Zyngier
2022-05-02 10:01 ` Marc Zyngier
2022-05-02 10:01 ` Marc Zyngier
2022-05-02 10:01 ` Marc Zyngier
[not found] ` <87ilqoi77b.wl-maz-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2022-05-02 18:46 ` Yosry Ahmed
2022-05-02 18:46 ` Yosry Ahmed
2022-05-02 18:46 ` Yosry Ahmed
2022-05-02 18:46 ` Yosry Ahmed
[not found] ` <CAJD7tkY7JF25XXUFq2mGroetMkfo-2zGOaQC94pjZE3D42+oaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-09 16:38 ` Yosry Ahmed
2022-05-09 16:38 ` Yosry Ahmed
2022-05-09 16:38 ` Yosry Ahmed
2022-05-09 16:38 ` Yosry Ahmed
[not found] ` <CAJD7tkbfT-FRs3LE2GPddqrQSWw_eC1R6k3z04x=z9Zvt5yLpg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-12 20:36 ` Shakeel Butt
2022-05-12 20:36 ` Shakeel Butt
2022-05-12 20:36 ` Shakeel Butt
2022-05-12 20:36 ` Shakeel Butt
2022-05-12 23:07 ` Johannes Weiner
2022-05-12 23:07 ` Johannes Weiner
2022-05-12 23:07 ` Johannes Weiner
2022-05-12 23:07 ` Johannes Weiner
[not found] ` <Yn2TGJ4vZ/fst+CY-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-05-12 23:29 ` Sean Christopherson
2022-05-12 23:29 ` Sean Christopherson
2022-05-12 23:29 ` Sean Christopherson
2022-05-12 23:29 ` Sean Christopherson
[not found] ` <Yn2YYl98Vhh/UL0w-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-05-13 15:50 ` Johannes Weiner
2022-05-13 15:50 ` Johannes Weiner
2022-05-13 15:50 ` Johannes Weiner
2022-05-13 15:50 ` Johannes Weiner
2022-05-13 16:12 ` Sean Christopherson
2022-05-13 16:12 ` Sean Christopherson
2022-05-13 16:12 ` Sean Christopherson
2022-05-13 16:12 ` Sean Christopherson
[not found] ` <Yn6DeEGLyR4Q0cDp-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-05-13 16:22 ` Yosry Ahmed
2022-05-13 16:22 ` Yosry Ahmed
2022-05-13 16:22 ` Yosry Ahmed
2022-05-13 16:22 ` Yosry Ahmed
2022-05-13 17:13 ` Shakeel Butt
2022-05-13 17:13 ` Shakeel Butt
2022-05-13 17:13 ` Shakeel Butt
2022-05-13 17:13 ` Shakeel Butt
2022-05-20 1:56 ` Yosry Ahmed
2022-05-20 1:56 ` Yosry Ahmed
2022-05-20 1:56 ` Yosry Ahmed
2022-05-20 1:56 ` Yosry Ahmed
[not found] ` <CAJD7tka-5+XRkthNV4qCg8woPCpjcwynQoRBame-3GP1L8y+WQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-20 14:39 ` Johannes Weiner
2022-05-20 14:39 ` Johannes Weiner
2022-05-20 14:39 ` Johannes Weiner
2022-05-20 14:39 ` Johannes Weiner
[not found] ` <YoeoLJNQTam5fJSu-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-05-24 22:31 ` Yosry Ahmed
2022-05-24 22:31 ` Yosry Ahmed
2022-05-24 22:31 ` Yosry Ahmed
2022-05-24 22:31 ` Yosry Ahmed
[not found] ` <CAJD7tkYjcmwBeUx-=MTQeUf78uqFDvfpy7OuKy4OvoS7HiVO1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-25 11:56 ` Johannes Weiner
2022-05-25 11:56 ` Johannes Weiner
2022-05-25 11:56 ` Johannes Weiner
2022-05-25 11:56 ` Johannes Weiner
2022-05-26 0:38 ` Sean Christopherson
2022-05-26 0:38 ` Sean Christopherson
2022-05-26 0:38 ` Sean Christopherson
2022-05-26 0:38 ` Sean Christopherson
[not found] ` <Yo7MHA2aUaprvgl8-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-05-27 18:33 ` Yosry Ahmed
2022-05-27 18:33 ` Yosry Ahmed
2022-05-27 18:33 ` Yosry Ahmed
2022-05-27 18:33 ` Yosry Ahmed
[not found] ` <CAJD7tkYoz=rYvBV3tcp4aLgiyEtr-sBwbncFduZsOq+c8wk5sA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-06-03 16:42 ` Johannes Weiner
2022-06-03 16:42 ` Johannes Weiner
2022-06-03 16:42 ` Johannes Weiner
2022-06-03 16:42 ` Johannes Weiner
2022-04-29 20:11 ` [PATCH v4 2/4] KVM: mmu: add a helper to account memory used by KVM mmu Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` [PATCH v4 3/4] KVM: x86/mmu: count KVM mmu usage in secondary pagetable stats Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
[not found] ` <20220429201131.3397875-4-yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-07-22 20:58 ` Mingwei Zhang [this message]
2022-07-22 20:58 ` Mingwei Zhang
2022-07-22 20:58 ` Mingwei Zhang
2022-07-22 20:58 ` Mingwei Zhang
[not found] ` <YtsPk5+hZNMEwT0c-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-07-26 18:03 ` Sean Christopherson
2022-07-26 18:03 ` Sean Christopherson
2022-07-26 18:03 ` Sean Christopherson
2022-07-26 18:03 ` Sean Christopherson
2022-04-29 20:11 ` [PATCH v4 4/4] KVM: arm64/mmu: count KVM s2 " Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-04-29 20:11 ` Yosry Ahmed
2022-05-02 7:24 ` Oliver Upton
2022-05-02 7:24 ` Oliver Upton
2022-05-02 7:24 ` Oliver Upton
2022-05-02 7:24 ` Oliver Upton
2022-05-02 9:49 ` Marc Zyngier
2022-05-02 9:49 ` Marc Zyngier
2022-05-02 9:49 ` Marc Zyngier
2022-05-02 9:49 ` Marc Zyngier
2022-05-02 16:41 ` Yosry Ahmed
2022-05-02 16:41 ` Yosry Ahmed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YtsPk5+hZNMEwT0c@google.com \
--to=mizhang-hpiqsd4aklfqt0dzr+alfa@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=alexandru.elisei-5wv7dgnIgG8@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
--cc=james.morse-5wv7dgnIgG8@public.gmane.org \
--cc=jmattson-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan.x-EC8Uxl6Npydl57MIdRCFDg@public.gmane.org \
--cc=maz-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=mhocko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=oupton-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=pbonzini-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=roman.gushchin-fxUVXftIFDnyG1zEObXtfA@public.gmane.org \
--cc=seanjc-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=suzuki.poulose-5wv7dgnIgG8@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=vkuznets-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=wanpengli-1Nz4purKYjRBDgjK7y7TUQ@public.gmane.org \
--cc=yosryahmed-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.