diff options
author | Paul Burton <[email protected]> | 2015-07-13 17:12:44 +0100 |
---|---|---|
committer | Ralf Baechle <[email protected]> | 2016-04-03 10:39:26 +0200 |
commit | 091bc3a4049cb0cb28b8e3e71d8738387b91a007 (patch) | |
tree | cd102c6a2e4ec7e8d1c467723467066cbc62bcc0 | |
parent | 8961b28f09dd2b5bb67738968e38a4d40a5b11bc (diff) |
MIPS: tlb-r4k: panic if the MMU doesn't support PAGE_SIZE
After writing the appropriate mask to the cop0 PageMask register, read
the register back & check it matches what we want. If it doesn't then
the MMU does not support the page size the kernel is configured for and
we're better off bailing than continuing to do odd things with TLB
exceptions.
Signed-off-by: Paul Burton <[email protected]>
Cc: Steven J. Hill <[email protected]>
Cc: Joshua Kinard <[email protected]>
Cc: Rafał Miłecki <[email protected]>
Cc: James Hogan <[email protected]>
Cc: Markos Chandras <[email protected]>
Cc: [email protected]
Cc: [email protected]
Patchwork: https://patchwork.linux-mips.org/patch/10691/
Signed-off-by: Ralf Baechle <[email protected]>
-rw-r--r-- | arch/mips/mm/tlb-r4k.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index 5037d5868cef..c17d7627f872 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c @@ -19,6 +19,7 @@ #include <asm/cpu.h> #include <asm/cpu-type.h> #include <asm/bootinfo.h> +#include <asm/hazards.h> #include <asm/mmu_context.h> #include <asm/pgtable.h> #include <asm/tlb.h> @@ -486,6 +487,10 @@ static void r4k_tlb_configure(void) * be set to fixed-size pages. */ write_c0_pagemask(PM_DEFAULT_MASK); + back_to_back_c0_hazard(); + if (read_c0_pagemask() != PM_DEFAULT_MASK) + panic("MMU doesn't support PAGE_SIZE=0x%lx", PAGE_SIZE); + write_c0_wired(0); if (current_cpu_type() == CPU_R10000 || current_cpu_type() == CPU_R12000 || |