aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc/mm/tlb.c
diff options
context:
space:
mode:
authorJose Abreu <Jose.Abreu@synopsys.com>2017-09-01 17:00:23 +0100
committerVineet Gupta <vgupta@synopsys.com>2017-09-01 11:29:05 -0700
commit1ee55a8f7f6b7ca4c0c59e0b4b4e3584a085c2d3 (patch)
treeb04b36aa2678527e951a7e3d7262926149ac2228 /arch/arc/mm/tlb.c
parentARC: Show fault information passed to show_kernel_fault_diag() (diff)
downloadlinux-dev-1ee55a8f7f6b7ca4c0c59e0b4b4e3584a085c2d3.tar.xz
linux-dev-1ee55a8f7f6b7ca4c0c59e0b4b4e3584a085c2d3.zip
ARC: Re-enable MMU upon Machine Check exception
I recently came upon a scenario where I would get a double fault machine check exception tiriggered by a kernel module. However the ensuing crash stacktrace (ksym lookup) was not working correctly. Turns out that machine check auto-disables MMU while modules are allocated in kernel vaddr spapce. This patch re-enables the MMU before start printing the stacktrace making stacktracing of modules work upon a fatal exception. Cc: stable@kernel.org Signed-off-by: Jose Abreu <joabreu@synopsys.com> Reviewed-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> [vgupta: moved code into low level handler to avoid in 2 places]
Diffstat (limited to '')
-rw-r--r--arch/arc/mm/tlb.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c
index edc59a0a9c9b..8ceefbf72fb0 100644
--- a/arch/arc/mm/tlb.c
+++ b/arch/arc/mm/tlb.c
@@ -908,9 +908,6 @@ void do_tlb_overlap_fault(unsigned long cause, unsigned long address,
local_irq_save(flags);
- /* re-enable the MMU */
- write_aux_reg(ARC_REG_PID, MMU_ENABLE | read_aux_reg(ARC_REG_PID));
-
/* loop thru all sets of TLB */
for (set = 0; set < mmu->sets; set++) {