irqchip/gic-v3: Work around affinity issues on ASR8601
authorzhengyan <zhengyan@asrmicro.com>
Mon, 22 May 2023 11:06:43 +0000 (19:06 +0800)
committerMarc Zyngier <maz@kernel.org>
Mon, 29 May 2023 20:19:34 +0000 (21:19 +0100)
commitb4d81fab1ed0b302c71a869e5b93d81dfbfd3175
treeba32aa1829c189b46f64a9a112eeede8e47202aa
parent3c65cbb7c5ebb4247968936899580c7f508ed223
irqchip/gic-v3: Work around affinity issues on ASR8601

The ASR8601 SoC combines ARMv8.2 CPUs from ARM with a GIC-500,
also from ARM. However, the two are incompatible as the former
expose an affinity in the form of (cluster, core, thread),
while the latter can only deal with (cluster, core). If nothing
is done, the GIC simply cannot route interrupts to the CPUs.

Implement a workaround that shifts the affinity down by a level,
ensuring the delivery of interrupts despite the implementation
mismatch.

Signed-off-by: zhengyan <zhengyan@asrmicro.com>
[maz: rewrote commit message, reimplemented the workaround
 in a manageable way]
Signed-off-by: Marc Zyngier <maz@kernel.org>
Documentation/arm64/silicon-errata.rst
drivers/irqchip/irq-gic-v3.c