RE: [PATCH 2/2] KVM: arm64: Add memcg accounting to KVM allocations

From: Justin He
Date: Fri Sep 03 2021 - 05:22:10 EST




> -----Original Message-----
> From: Marc Zyngier <maz@xxxxxxxxxx>
> Sent: Friday, September 3, 2021 2:12 AM
> To: Justin He <Justin.He@xxxxxxx>
> Cc: James Morse <James.Morse@xxxxxxx>; Alexandru Elisei
> <Alexandru.Elisei@xxxxxxx>; Suzuki Poulose <Suzuki.Poulose@xxxxxxx>;
> Catalin Marinas <Catalin.Marinas@xxxxxxx>; Will Deacon <will@xxxxxxxxxx>;
> Liu Shixin <liushixin2@xxxxxxxxxx>; Eric Auger <eric.auger@xxxxxxxxxx>;
> Kees Cook <keescook@xxxxxxxxxxxx>; Nick Desaulniers
> <ndesaulniers@xxxxxxxxxx>; Shenming Lu <lushenming@xxxxxxxxxx>; Sami
> Tolvanen <samitolvanen@xxxxxxxxxx>; Lorenzo Pieralisi
> <Lorenzo.Pieralisi@xxxxxxx>; Xiaoming Ni <nixiaoming@xxxxxxxxxx>; Zenghui
> Yu <yuzenghui@xxxxxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> kvmarm@xxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH 2/2] KVM: arm64: Add memcg accounting to KVM
> allocations
>
> On Thu, 02 Sep 2021 01:28:01 +0100,
> Jia He <justin.he@xxxxxxx> wrote:
> >
> > Inspired by commit 254272ce6505 ("kvm: x86: Add memcg accounting to KVM
> > allocations"), it would be better to make arm64 KVM consistent with
> > common kvm codes.
> >
> > The memory allocations of VM scope should be charged into VM process
> > cgroup, hence change GFP_KERNEL to GFP_KERNEL_ACCOUNT.
> >
> > There remained a few cases since these allocations are global, not in VM
> > scope.
> >
> > Signed-off-by: Jia He <justin.he@xxxxxxx>
> > ---
> > arch/arm64/kvm/arm.c | 6 ++++--
> > arch/arm64/kvm/mmu.c | 2 +-
> > arch/arm64/kvm/pmu-emul.c | 2 +-
> > arch/arm64/kvm/reset.c | 2 +-
> > 4 files changed, 7 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
> > index e9a2b8f27792..9d6f5bcaddef 100644
> > --- a/arch/arm64/kvm/arm.c
> > +++ b/arch/arm64/kvm/arm.c
> > @@ -289,10 +289,12 @@ long kvm_arch_dev_ioctl(struct file *filp,
> >
> > struct kvm *kvm_arch_alloc_vm(void)
> > {
> > + unsigned long sz = sizeof(struct kvm);
>
> If you are going to introduce an extra variable, please use the
> correct type (size_t).

Okay
>
> > +
> > if (!has_vhe())
> > - return kzalloc(sizeof(struct kvm), GFP_KERNEL);
> > + return kzalloc(sz, GFP_KERNEL | GFP_KERNEL_ACCOUNT);
>
> Why both GFP_KERNEL and GFP_KERNEL_ACCOUNT?
Urgh, sorry for the mistake.

--
Cheers,
Justin (Jia He)