]> git.baikalelectronics.ru Git - kernel.git/commit
irqchip/gic-v3: Workaround Marvell erratum 38545 when reading IAR
authorLinu Cherian <lcherian@marvell.com>
Mon, 7 Mar 2022 14:30:14 +0000 (20:00 +0530)
committerWill Deacon <will@kernel.org>
Mon, 7 Mar 2022 21:45:02 +0000 (21:45 +0000)
commitf8b97a4791ad94db0fef2e996f8b9bb2d24128d7
tree37b2fa86a84d07b495566edff338bd873b0d4c0c
parent6757ee160ac3fc336324c4ac5a8718b5090c9ffe
irqchip/gic-v3: Workaround Marvell erratum 38545 when reading IAR

When a IAR register read races with a GIC interrupt RELEASE event,
GIC-CPU interface could wrongly return a valid INTID to the CPU
for an interrupt that is already released(non activated) instead of 0x3ff.

As a side effect, an interrupt handler could run twice, once with
interrupt priority and then with idle priority.

As a workaround, gic_read_iar is updated so that it will return a
valid interrupt ID only if there is a change in the active priority list
after the IAR read on all the affected Silicons.

Since there are silicon variants where both 23154 and 38545 are applicable,
workaround for erratum 23154 has been extended to address both of them.

Signed-off-by: Linu Cherian <lcherian@marvell.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20220307143014.22758-1-lcherian@marvell.com
Signed-off-by: Will Deacon <will@kernel.org>
Documentation/arm64/silicon-errata.rst
arch/arm64/Kconfig
arch/arm64/include/asm/arch_gicv3.h
arch/arm64/include/asm/cputype.h
arch/arm64/kernel/cpu_errata.c