aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/netlogic
diff options
context:
space:
mode:
authorJayachandran C <jchandra@broadcom.com>2015-01-09 05:43:20 -0500
committerRalf Baechle <ralf@linux-mips.org>2015-04-01 11:21:52 -0400
commit5084e93dfeebd171e0ad02cc7ea560364a7f80b3 (patch)
tree1cd86fe1fb2f0da8888c562fa926033c16963e0b /arch/mips/netlogic
parentb3b73ae62ca82744c92c1c2d49381add26d0a8bd (diff)
MIPS: Netlogic: Handle XLP hardware errata
Core configuration register IFU_BRUB_RESERVE has to be setup to handle a silicon errata which can result in a CPU hang. Signed-off-by: Jayachandran C <jchandra@broadcom.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/8902/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/netlogic')
-rw-r--r--arch/mips/netlogic/common/reset.S20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/mips/netlogic/common/reset.S b/arch/mips/netlogic/common/reset.S
index 701c4bcb9e47..e3e518974e0b 100644
--- a/arch/mips/netlogic/common/reset.S
+++ b/arch/mips/netlogic/common/reset.S
@@ -235,6 +235,26 @@ EXPORT(nlm_boot_siblings)
235 mfc0 v0, CP0_EBASE, 1 235 mfc0 v0, CP0_EBASE, 1
236 andi v0, 0x3ff /* v0 <- node/core */ 236 andi v0, 0x3ff /* v0 <- node/core */
237 237
238 /*
239 * Errata: to avoid potential live lock, setup IFU_BRUB_RESERVE
240 * when running 4 threads per core
241 */
242 andi v1, v0, 0x3 /* v1 <- thread id */
243 bnez v1, 2f
244 nop
245
246 /* thread 0 of each core. */
247 li t0, CKSEG1ADDR(RESET_DATA_PHYS)
248 lw t1, BOOT_THREAD_MODE(t0) /* t1 <- thread mode */
249 subu t1, 0x3 /* 4-thread per core mode? */
250 bnez t1, 2f
251 nop
252
253 li t0, IFU_BRUB_RESERVE
254 li t1, 0x55
255 mtcr t1, t0
256 _ehb
2572:
238 beqz v0, 4f /* boot cpu (cpuid == 0)? */ 258 beqz v0, 4f /* boot cpu (cpuid == 0)? */
239 nop 259 nop
240 260