KVM: x86: Rely solely on preempted_in_kernel flag for directed yield
authorSean Christopherson <seanjc@google.com>
Wed, 10 Jan 2024 00:39:36 +0000 (16:39 -0800)
committerSean Christopherson <seanjc@google.com>
Fri, 23 Feb 2024 00:27:03 +0000 (16:27 -0800)
commit9b8615c5d37fca15b330882bafceaf24f2398352
treea8c9b88b0ea0944ea72013077efc9976b70ed55c
parent77bcd9e6231a5297ef417a7d7f734d61c2bcceb6
KVM: x86: Rely solely on preempted_in_kernel flag for directed yield

Snapshot preempted_in_kernel using kvm_arch_vcpu_in_kernel() so that the
flag is "accurate" (or rather, consistent and deterministic within KVM)
for guests with protected state, and explicitly use preempted_in_kernel
when checking if a vCPU was preempted in kernel mode instead of bouncing
through kvm_arch_vcpu_in_kernel().

Drop the gnarly logic in kvm_arch_vcpu_in_kernel() that redirects to
preempted_in_kernel if the target vCPU is not the "running", i.e. loaded,
vCPU, as the only reason that code existed was for the directed yield case
where KVM wants to check the CPL of a vCPU that may or may not be loaded
on the current pCPU.

Cc: Like Xu <like.xu.linux@gmail.com>
Reviewed-by: Yuan Yao <yuan.yao@intel.com>
Link: https://lore.kernel.org/r/20240110003938.490206-3-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/x86.c