]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: Add a flag to track if a loaded vCPU is scheduled out
authorSean Christopherson <seanjc@google.com>
Wed, 22 May 2024 01:40:08 +0000 (18:40 -0700)
committerSean Christopherson <seanjc@google.com>
Tue, 11 Jun 2024 21:18:42 +0000 (14:18 -0700)
commitd1ae567fb8b559401a9f65290bbb0cef5e987bfe
treeafb1efb8b219e4228078c1cccc3408cee5d2e7ee
parentc4201bd24f4ae80760ecdcf6c0d261ca867ba4ca
KVM: Add a flag to track if a loaded vCPU is scheduled out

Add a kvm_vcpu.scheduled_out flag to track if a vCPU is in the process of
being scheduled out (vCPU put path), or if the vCPU is being reloaded
after being scheduled out (vCPU load path).  In the short term, this will
allow dropping kvm_arch_sched_in(), as arch code can query scheduled_out
during kvm_arch_vcpu_load().

Longer term, scheduled_out opens up other potential optimizations, without
creating subtle/brittle dependencies.  E.g. it allows KVM to keep guest
state (that is managed via kvm_arch_vcpu_{load,put}()) loaded across
kvm_sched_{out,in}(), if KVM knows the state isn't accessed by the host
kernel.  Forcing arch code to coordinate between kvm_arch_sched_{in,out}()
and kvm_arch_vcpu_{load,put}() is awkward, not reusable, and relies on the
exact ordering of calls into arch code.

Adding scheduled_out also obviates the need for a kvm_arch_sched_out()
hook, e.g. if arch code needs to do something novel when putting vCPU
state.

And even if KVM never uses scheduled_out for anything beyond dropping
kvm_arch_sched_in(), just being able to remove all of the arch stubs makes
it worth adding the flag.

Link: https://lore.kernel.org/all/20240430224431.490139-1-seanjc@google.com
Cc: Oliver Upton <oliver.upton@linux.dev>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Acked-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20240522014013.1672962-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
include/linux/kvm_host.h
virt/kvm/kvm_main.c