]> git.baikalelectronics.ru Git - kernel.git/commit
irqchip/gic: Work around broken Renesas integration
authorMarc Zyngier <maz@kernel.org>
Fri, 10 Sep 2021 17:29:25 +0000 (18:29 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 22 Sep 2021 13:44:25 +0000 (14:44 +0100)
commit838ed34c1595fc7786153d52d1c178e22f97741a
treea3c5456a570813a75601bba43447525d4f43ed1d
parent34819a6e56f2379e757f59ebd109c99546e904aa
irqchip/gic: Work around broken Renesas integration

Geert reported that the GIC driver locks up on a Renesas system
since 981f99f4b07c3cea ("irqchip/gic: Atomically update affinity")
fixed the driver to use writeb_relaxed() instead of writel_relaxed().

As it turns out, the interconnect used on this system mandates
32bit wide accesses for all MMIO transactions, even if the GIC
architecture specifically mandates for some registers to be byte
accessible. Gahhh...

Work around the issue by crudly detecting the offending system,
and falling back to an inefficient RMW+lock implementation.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/CAMuHMdV+Ev47K5NO8XHsanSq5YRMCHn2gWAQyV-q2LpJVy9HiQ@mail.gmail.com
drivers/irqchip/irq-gic.c