irqchip/gicv3: Workaround for Cavium ThunderX erratum 23154
authorRobert Richter <rrichter@cavium.com>
Mon, 21 Sep 2015 20:58:35 +0000 (22:58 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 29 Sep 2015 08:10:53 +0000 (10:10 +0200)
commit6d4e11c5e2e8cd54a035ba395bf8ccfa7e22cfd8
tree4a75f95e66d6a3a370ca9027373d5c1cbe856f2e
parent30f2136346cab91e1ffd9ee6370d76809f20487a
irqchip/gicv3: Workaround for Cavium ThunderX erratum 23154

This patch implements Cavium ThunderX erratum 23154.

The gicv3 of ThunderX requires a modified version for reading the IAR
status to ensure data synchronization. Since this is in the fast-path
and called with each interrupt, runtime patching is used using jump
label patching for smallest overhead (no-op). This is the same
technique as used for tracepoints.

Signed-off-by: Robert Richter <rrichter@cavium.com>
Reviewed-by: Marc Zygnier <marc.zyngier@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Tirumalesh Chalamarla <tchalamarla@cavium.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Link: http://lkml.kernel.org/r/1442869119-1814-3-git-send-email-rric@kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm64/Kconfig
arch/arm64/include/asm/cpufeature.h
arch/arm64/include/asm/cputype.h
arch/arm64/kernel/cpu_errata.c
drivers/irqchip/irq-gic-v3.c