[PATCH v2] arc: Re-enable MMU upon die()
Vineet Gupta
Vineet.Gupta1 at synopsys.com
Fri Sep 1 09:05:51 PDT 2017
On 09/01/2017 09:01 AM, Jose Abreu wrote:
> Oops, the commit title is now a little bit odd. Let me rephrase
> and send a new version.
Don't worry - I'll fix it up here !
Thx,
-Vineet
>
> On 01-09-2017 17:00, Jose Abreu wrote:
>> I recently came upon a scenario where I would get a double fault
>> after a machine check error. It turns out that for Ksymbol lookup
>> to work with modules we need to have MMU enabled because module
>> address is mapped in the cached space.
>>
>> This patch re-enables the MMU before start printing the stacktrace
>> making stacktracing of modules work upon a fatal exception.
>>
>> Signed-off-by: Jose Abreu <joabreu at synopsys.com>
>> Cc: Vineet Gupta <vgupta at synopsys.com>
>> Cc: Alexey Brodkin <abrodkin at synopsys.com>
>>
>> Changes from v1:
>> - Moved MMU re-enable to machine check exception handler
>> ---
>> arch/arc/kernel/traps.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c
>> index ff83e78..d92f161 100644
>> --- a/arch/arc/kernel/traps.c
>> +++ b/arch/arc/kernel/traps.c
>> @@ -19,6 +19,8 @@
>> #include <linux/ptrace.h>
>> #include <linux/kprobes.h>
>> #include <linux/kgdb.h>
>> +#include <asm/arcregs.h>
>> +#include <asm/mmu.h>
>> #include <asm/setup.h>
>> #include <asm/unaligned.h>
>> #include <asm/kprobes.h>
>> @@ -103,6 +105,9 @@ int do_misaligned_access(unsigned long address, struct pt_regs *regs,
>> */
>> void do_machine_check_fault(unsigned long address, struct pt_regs *regs)
>> {
>> + /* MMU must be enabled for Ksymbol lookup in modules */
>> + write_aux_reg(ARC_REG_PID, MMU_ENABLE | read_aux_reg(ARC_REG_PID));
>> +
>> die("Machine Check Exception", regs, address);
>> }
>>
>
More information about the linux-snps-arc
mailing list