MIPS: smp-cps: Ensure secondary cores start with EVA disabled

The kernel currently assumes that a core will start up in legacy mode
using the exception base provided through the CM GCR registers. If a
core has been configured in hardware to start in EVA mode, these
assumptions will fail.

This patch ensures that secondary cores are initialized to meet these
assumptions.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Reviewed-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/11907/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by Matt Redfearn and committed by Ralf Baechle 497e803e a68f3768

+7
+4
arch/mips/include/asm/mips-cm.h
··· 243 #define CM_GCR_BASE_CMDEFTGT_IOCU0 2 244 #define CM_GCR_BASE_CMDEFTGT_IOCU1 3 245 246 /* GCR_ACCESS register fields */ 247 #define CM_GCR_ACCESS_ACCESSEN_SHF 0 248 #define CM_GCR_ACCESS_ACCESSEN_MSK (_ULCAST_(0xff) << 0)
··· 243 #define CM_GCR_BASE_CMDEFTGT_IOCU0 2 244 #define CM_GCR_BASE_CMDEFTGT_IOCU1 3 245 246 + /* GCR_RESET_EXT_BASE register fields */ 247 + #define CM_GCR_RESET_EXT_BASE_EVARESET BIT(31) 248 + #define CM_GCR_RESET_EXT_BASE_UEB BIT(30) 249 + 250 /* GCR_ACCESS register fields */ 251 #define CM_GCR_ACCESS_ACCESSEN_SHF 0 252 #define CM_GCR_ACCESS_ACCESSEN_MSK (_ULCAST_(0xff) << 0)
+3
arch/mips/kernel/smp-cps.c
··· 202 /* Ensure its coherency is disabled */ 203 write_gcr_co_coherence(0); 204 205 /* Ensure the core can access the GCRs */ 206 access = read_gcr_access(); 207 access |= 1 << (CM_GCR_ACCESS_ACCESSEN_SHF + core);
··· 202 /* Ensure its coherency is disabled */ 203 write_gcr_co_coherence(0); 204 205 + /* Start it with the legacy memory map and exception base */ 206 + write_gcr_co_reset_ext_base(CM_GCR_RESET_EXT_BASE_UEB); 207 + 208 /* Ensure the core can access the GCRs */ 209 access = read_gcr_access(); 210 access |= 1 << (CM_GCR_ACCESS_ACCESSEN_SHF + core);