diff options
author | Jose Abreu <Jose.Abreu@synopsys.com> | 2017-09-01 18:00:23 +0200 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2017-09-01 20:29:05 +0200 |
commit | 1ee55a8f7f6b7ca4c0c59e0b4b4e3584a085c2d3 (patch) | |
tree | b04b36aa2678527e951a7e3d7262926149ac2228 /arch/arc/mm | |
parent | ARC: Show fault information passed to show_kernel_fault_diag() (diff) | |
download | linux-1ee55a8f7f6b7ca4c0c59e0b4b4e3584a085c2d3.tar.xz linux-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 'arch/arc/mm')
-rw-r--r-- | arch/arc/mm/tlb.c | 3 |
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++) { |