Re: [PATCH v2 35/43] KVM: SVM: Signal AVIC doorbell iff vCPU is in guest mode

From: Paolo Bonzini
Date: Wed Oct 27 2021 - 11:36:36 EST


On 27/10/21 17:06, Sean Christopherson wrote:
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.

Right, so should we drop the "if (running)" check in this patch, at the same time as it's adding the IN_GUEST_MODE check?

Paolo