]> git.ipfire.org Git - thirdparty/linux.git/commit
KVM: arm64: vgic: Avoid double-deactivate of IRQs in the nested context
authorD Scott Phillips <scott@os.amperecomputing.com>
Tue, 14 Jul 2026 23:11:58 +0000 (16:11 -0700)
committerMarc Zyngier <maz@kernel.org>
Tue, 21 Jul 2026 10:19:00 +0000 (11:19 +0100)
commit8a570b19b4b16a8a3b5ffa2b332bd5613110b2d8
treeef4c5462bcead568f99bd60a9253b2aa2dfadff2
parent1590cf0329716306e948a8fc29f1d3ee87d3989f
KVM: arm64: vgic: Avoid double-deactivate of IRQs in the nested context

In the nested state, the physical interrupt has already been
deactivated through the HW bit in the LR. The extra deactivation
would be harmless but can hit an errata case on AmpereOne, so
avoid it here.

On AmpereOne, deactivating a physical interrupt through
ICC_DIR_EL1 or ICC_EOIR1_EL1 (depending on EOImode) which is not
active, but is the highest priority pending interrupt causes the
cpu to lose the interrupt pending state and also prevents the
delivery of future interrupts.

Fixes: 6dd333c8942b2 ("KVM: arm64: GICv3: nv: Plug L1 LR sync into deactivation primitive")
Signed-off-by: D Scott Phillips <scott@os.amperecomputing.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-arm-kernel/20260710222128.416581-1-scott@os.amperecomputing.com/
Link: https://patch.msgid.link/20260714231158.496808-1-scott@os.amperecomputing.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
Documentation/arch/arm64/silicon-errata.rst
arch/arm64/kvm/vgic/vgic-v3.c