]> 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)
commitb74bc0b67bb20148015610fc510b8052a06367a9
treea3c5456a570813a75601bba43447525d4f43ed1d
parentaa7c596abdfb2f6b9bec179091f1db3c2aa09cc5
irqchip/gic: Work around broken Renesas integration

Geert reported that the GIC driver locks up on a Renesas system
since a74a9c027d944f3a ("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