Does this still need to check the "running" flag? That should be a strict
superset of vcpu->mode == IN_GUEST_MODE.
No. Signalling the doorbell when "running" is set but the vCPU is not in the
guest is just an expensive nop. So even if KVM were to rework its handling of
"running" to set the flag immediately before VMRUN and clear it immediately after,
keying off IN_GUEST_MODE and not "running" would not be wrong, just sub-optimal.
I doubt KVM will ever make the "running" flag super precise, because keeping the
flag set when the vCPU is loaded avoids VM-Exits on other vCPUs due to undelivered
IPIs.