• Sean Christopherson's avatar
    KVM: Add a flag to track if a loaded vCPU is scheduled out · d1ae567f
    Sean Christopherson authored
    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: default avatarOliver Upton <oliver.upton@linux.dev>
    Acked-by: default avatarKai Huang <kai.huang@intel.com>
    Link: https://lore.kernel.org/r/20240522014013.1672962-2-seanjc@google.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
    d1ae567f
kvm_main.c 166 KB