From: Sean Christopherson <seanjc@google.com>
To: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org
Subject: Re: [PATCH] kvm: do not account temporary allocations to kmem
Date: Mon, 10 Jun 2024 14:53:39 -0700 [thread overview]
Message-ID: <Zmd148whQzsuIzm_@google.com> (raw)
In-Reply-To: <c0122f66-f428-417e-a360-b25fc0f154a0@p183>
On Mon, Jun 10, 2024, Alexey Dobriyan wrote:
> Some allocations done by KVM are temporary, they are created as result
> of program actions, but can't exists for arbitrary long times.
>
> They should have been GFP_TEMPORARY (rip!).
Wouldn't GFP_USER be more appropriate for all of these? E.g. KVM_SET_REGS uses
memdup_user() and thus GFP_USER.
> OTOH, kvm-nx-lpage-recovery and kvm-pit kernel threads exist for as long
> as VM exists but their task_struct memory is not accounted.
> This is story for another day.
>
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ---
>
> virt/kvm/kvm_main.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -4427,7 +4427,7 @@ static long kvm_vcpu_ioctl(struct file *filp,
> struct kvm_regs *kvm_regs;
>
> r = -ENOMEM;
> - kvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL_ACCOUNT);
> + kvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL);
> if (!kvm_regs)
> goto out;
> r = kvm_arch_vcpu_ioctl_get_regs(vcpu, kvm_regs);
> @@ -4454,8 +4454,7 @@ static long kvm_vcpu_ioctl(struct file *filp,
> break;
> }
> case KVM_GET_SREGS: {
> - kvm_sregs = kzalloc(sizeof(struct kvm_sregs),
> - GFP_KERNEL_ACCOUNT);
> + kvm_sregs = kzalloc(sizeof(struct kvm_sregs), GFP_KERNEL);
> r = -ENOMEM;
> if (!kvm_sregs)
> goto out;
> @@ -4547,7 +4546,7 @@ static long kvm_vcpu_ioctl(struct file *filp,
> break;
> }
> case KVM_GET_FPU: {
> - fpu = kzalloc(sizeof(struct kvm_fpu), GFP_KERNEL_ACCOUNT);
> + fpu = kzalloc(sizeof(struct kvm_fpu), GFP_KERNEL);
> r = -ENOMEM;
> if (!fpu)
> goto out;
> @@ -6210,7 +6209,7 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm)
> active = kvm_active_vms;
> mutex_unlock(&kvm_lock);
>
> - env = kzalloc(sizeof(*env), GFP_KERNEL_ACCOUNT);
> + env = kzalloc(sizeof(*env), GFP_KERNEL);
> if (!env)
> return;
>
> @@ -6226,7 +6225,7 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm)
> add_uevent_var(env, "PID=%d", kvm->userspace_pid);
>
> if (!IS_ERR(kvm->debugfs_dentry)) {
> - char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL_ACCOUNT);
> + char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL);
>
> if (p) {
> tmp = dentry_path_raw(kvm->debugfs_dentry, p, PATH_MAX);
next prev parent reply other threads:[~2024-06-10 21:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-10 10:31 [PATCH] kvm: do not account temporary allocations to kmem Alexey Dobriyan
2024-06-10 21:53 ` Sean Christopherson [this message]
2024-06-10 22:33 ` Paolo Bonzini
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=Zmd148whQzsuIzm_@google.com \
--to=seanjc@google.com \
--cc=adobriyan@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
/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.