Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

KVM: arm64: vgic-v5: Transfer edge pending state to ICH_PPI_PENDRx_EL2

While it is perfectly correct to leave the pending state of a level
interrupt as is when queuing it (it is, after all, only driven by
the line), edge pending state must be transfered, as nothing will
lower it.

Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Fixes: 4d591252bacb2 ("KVM: arm64: gic-v5: Implement PPI interrupt injection")
Link: https://sashiko.dev/#/patchset/20260319154937.3619520-1-sascha.bischoff%40arm.com
Link: https://patch.msgid.link/20260401103611.357092-8-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>

+4 -1
+4 -1
arch/arm64/kvm/vgic/vgic-v5.c
··· 445 445 446 446 irq = vgic_get_vcpu_irq(vcpu, intid); 447 447 448 - scoped_guard(raw_spinlock_irqsave, &irq->irq_lock) 448 + scoped_guard(raw_spinlock_irqsave, &irq->irq_lock) { 449 449 __assign_bit(i, pendr, irq_is_pending(irq)); 450 + if (irq->config == VGIC_CONFIG_EDGE) 451 + irq->pending_latch = false; 452 + } 450 453 451 454 vgic_put_irq(vcpu->kvm, irq); 452 455 }