aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiaxun Yang <[email protected]>2023-04-04 10:33:42 +0100
committerThomas Bogendoerfer <[email protected]>2023-04-05 09:45:08 +0200
commite1aa1dfef69320141f5d00eddbf279b41e70d4e7 (patch)
treecb043443d12298336787df2c5f2c7d29958f62e5
parentaa45787c0db0a5f7b21bd16b917ff44761a2c6ac (diff)
MIPS: mips-cm: Check availability of config registers
Prevent reading unsupported config register during probing process. Signed-off-by: Jiaxun Yang <[email protected]> Signed-off-by: Thomas Bogendoerfer <[email protected]>
-rw-r--r--arch/mips/kernel/mips-cm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/mips/kernel/mips-cm.c b/arch/mips/kernel/mips-cm.c
index b4f7d950c846..3f00788b0871 100644
--- a/arch/mips/kernel/mips-cm.c
+++ b/arch/mips/kernel/mips-cm.c
@@ -181,11 +181,16 @@ static DEFINE_PER_CPU_ALIGNED(unsigned long, cm_core_lock_flags);
phys_addr_t __mips_cm_phys_base(void)
{
- u32 config3 = read_c0_config3();
unsigned long cmgcr;
/* Check the CMGCRBase register is implemented */
- if (!(config3 & MIPS_CONF3_CMGCR))
+ if (!(read_c0_config() & MIPS_CONF_M))
+ return 0;
+
+ if (!(read_c0_config2() & MIPS_CONF_M))
+ return 0;
+
+ if (!(read_c0_config3() & MIPS_CONF3_CMGCR))
return 0;
/* Read the address from CMGCRBase */