diff options
author | David Daney <david.daney@cavium.com> | 2015-01-15 08:11:13 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2015-02-20 09:31:27 -0500 |
commit | e3d0ead59f6c1167c817ea338dd9395d517940e1 (patch) | |
tree | 66f0c4d5f1443b0415cfa4a4f3b420d175abbf24 | |
parent | 664f1ae53d60943093db9bdb14ac3d95cac4b68c (diff) |
MIPS: OCTEON: Implement DCache errata workaround for all CN6XXX
Make messages refer to all CN6XXX.
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8941/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-rw-r--r-- | arch/mips/cavium-octeon/setup.c | 7 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-cavium-octeon/war.h | 3 | ||||
-rw-r--r-- | arch/mips/mm/uasm.c | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index 2d8a53100e41..6c51ef6d57c7 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c | |||
@@ -1041,7 +1041,7 @@ EXPORT_SYMBOL(prom_putchar); | |||
1041 | 1041 | ||
1042 | void prom_free_prom_memory(void) | 1042 | void prom_free_prom_memory(void) |
1043 | { | 1043 | { |
1044 | if (OCTEON_IS_MODEL(OCTEON_CN63XX_PASS1_X)) { | 1044 | if (CAVIUM_OCTEON_DCACHE_PREFETCH_WAR) { |
1045 | /* Check for presence of Core-14449 fix. */ | 1045 | /* Check for presence of Core-14449 fix. */ |
1046 | u32 insn; | 1046 | u32 insn; |
1047 | u32 *foo; | 1047 | u32 *foo; |
@@ -1063,8 +1063,9 @@ void prom_free_prom_memory(void) | |||
1063 | panic("No PREF instruction at Core-14449 probe point."); | 1063 | panic("No PREF instruction at Core-14449 probe point."); |
1064 | 1064 | ||
1065 | if (((insn >> 16) & 0x1f) != 28) | 1065 | if (((insn >> 16) & 0x1f) != 28) |
1066 | panic("Core-14449 WAR not in place (%04x).\n" | 1066 | panic("OCTEON II DCache prefetch workaround not in place (%04x).\n" |
1067 | "Please build kernel with proper options (CONFIG_CAVIUM_CN63XXP1).", insn); | 1067 | "Please build kernel with proper options (CONFIG_CAVIUM_CN63XXP1).", |
1068 | insn); | ||
1068 | } | 1069 | } |
1069 | } | 1070 | } |
1070 | 1071 | ||
diff --git a/arch/mips/include/asm/mach-cavium-octeon/war.h b/arch/mips/include/asm/mach-cavium-octeon/war.h index eb72b35cf04b..35c80be92207 100644 --- a/arch/mips/include/asm/mach-cavium-octeon/war.h +++ b/arch/mips/include/asm/mach-cavium-octeon/war.h | |||
@@ -22,4 +22,7 @@ | |||
22 | #define R10000_LLSC_WAR 0 | 22 | #define R10000_LLSC_WAR 0 |
23 | #define MIPS34K_MISSED_ITLB_WAR 0 | 23 | #define MIPS34K_MISSED_ITLB_WAR 0 |
24 | 24 | ||
25 | #define CAVIUM_OCTEON_DCACHE_PREFETCH_WAR \ | ||
26 | OCTEON_IS_MODEL(OCTEON_CN6XXX) | ||
27 | |||
25 | #endif /* __ASM_MIPS_MACH_CAVIUM_OCTEON_WAR_H */ | 28 | #endif /* __ASM_MIPS_MACH_CAVIUM_OCTEON_WAR_H */ |
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c index f86d293463a6..319051c34343 100644 --- a/arch/mips/mm/uasm.c +++ b/arch/mips/mm/uasm.c | |||
@@ -341,7 +341,7 @@ I_u3u1u2(_ldx) | |||
341 | void ISAFUNC(uasm_i_pref)(u32 **buf, unsigned int a, signed int b, | 341 | void ISAFUNC(uasm_i_pref)(u32 **buf, unsigned int a, signed int b, |
342 | unsigned int c) | 342 | unsigned int c) |
343 | { | 343 | { |
344 | if (OCTEON_IS_MODEL(OCTEON_CN63XX_PASS1_X) && a <= 24 && a != 5) | 344 | if (CAVIUM_OCTEON_DCACHE_PREFETCH_WAR && a <= 24 && a != 5) |
345 | /* | 345 | /* |
346 | * As per erratum Core-14449, replace prefetches 0-4, | 346 | * As per erratum Core-14449, replace prefetches 0-4, |
347 | * 6-24 with 'pref 28'. | 347 | * 6-24 with 'pref 28'. |