On Thu, 13 Jul 2023 08:06:57 +0100, Marc Zyngier wrote:
Xiang reports that VMs occasionally fail to boot on GICv4.1 systems when running a preemptible kernel, as it is possible that a vCPU is blocked without requesting a doorbell interrupt.
The issue is that any preemption that occurs between vgic_v4_put() and schedule() on the block path will mark the vPE as nonresident and *not* request a doorbell irq. This occurs because when the vcpu thread is resumed on its way to block, vcpu_load() will make the vPE resident again. Once the vcpu actually blocks, we don't request a doorbell anymore, and the vcpu won't be woken up on interrupt delivery.
[...]
Applied to kvmarm/fixes, thanks!
[1/1] KVM: arm64: vgic-v4: Make the doorbell request robust w.r.t preemption https://git.kernel.org/kvmarm/kvmarm/c/b321c31c9b7b
-- Best, Oliver