]> www.infradead.org Git - users/dwmw2/linux.git/commit
kvm: defer huge page recovery vhost task to later
authorKeith Busch <kbusch@kernel.org>
Thu, 23 Jan 2025 15:35:43 +0000 (07:35 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 24 Jan 2025 15:53:56 +0000 (10:53 -0500)
commit931656b9e2ff7029aee0b36e17780621948a6ac1
tree6f2c1558a03bc4ed547b12bd33e614fd014201ba
parent86eb1aef7279ec68fe9b7a44685efc09aa56a8f0
kvm: defer huge page recovery vhost task to later

Some libraries want to ensure they are single threaded before forking,
so making the kernel's kvm huge page recovery process a vhost task of
the user process breaks those. The minijail library used by crosvm is
one such affected application.

Defer the task to after the first VM_RUN call, which occurs after the
parent process has forked all its jailed processes. This needs to happen
only once for the kvm instance, so introduce some general-purpose
infrastructure for that, too.  It's similar in concept to pthread_once;
except it is actually usable, because the callback takes a parameter.

Cc: Sean Christopherson <seanjc@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Alyssa Ross <hi@alyssa.is>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Message-ID: <20250123153543.2769928-1-kbusch@meta.com>
[Move call_once API to include/linux. - Paolo]
Cc: stable@vger.kernel.org
Fixes: d96c77bd4eeb ("KVM: x86: switch hugepage recovery thread to vhost_task")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu/mmu.c
arch/x86/kvm/x86.c
include/linux/call_once.h [new file with mode: 0644]