On 08/14/2015 11:28 AM, Robert Richter wrote:
From: Robert Richter <rrich...@cavium.com>

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.

v4:
  * simplify code to only use cpus_have_cap() in gicv3_enable_quirks()

v3:
  * fix erratum to be dependend from midr
  * use arm64 errata framework

v2:
  * implement code in a single asm() to keep instruction sequence
  * added comment to the code that explains the erratum
  * apply workaround also if running as guest, thus check MIDR

Signed-off-by: Robert Richter <rrich...@cavium.com>
---
  arch/arm64/Kconfig                  | 11 ++++++++++
  arch/arm64/include/asm/cpufeature.h |  3 ++-
  arch/arm64/include/asm/cputype.h    | 18 +++++++++-------
  arch/arm64/kernel/cpu_errata.c      |  9 ++++++++
  drivers/irqchip/irq-gic-v3.c        | 42 ++++++++++++++++++++++++++++++++++++-
  5 files changed, 74 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 0f6edb14b7e4..4f866a4c6536 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -417,6 +417,17 @@ config ARM64_ERRATUM_845719

          If unsure, say Y.

+config CAVIUM_ERRATUM_23154
+       bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed"
+       depends on ARCH_THUNDER

None of the other errata depend on a specific ARCH_*. I think we should remove this 'depends on', so that a generic kernel can be configured to work on Thunder without having to first select ARCH_THUNDER.

David Daney


+       default y
+       help
+         The gicv3 of ThunderX requires a modified version for
+         reading the IAR status to ensure data synchronization
+         (access to icc_iar1_el1 is not sync'ed before and after).
+
+         If unsure, say Y.
+
  endmenu



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to