arm64: traps: Dump registers prior to panic() in bad_mode()
authorWill Deacon <will@kernel.org>
Mon, 15 Jun 2020 11:23:16 +0000 (12:23 +0100)
committerWill Deacon <will@kernel.org>
Mon, 15 Jun 2020 15:58:13 +0000 (16:58 +0100)
When panicing due to an unknown/unhandled exception at EL1, dump the
registers of the faulting context so that it's easier to figure out
what went wrong. In particular, this makes it a lot easier to debug
in-kernel BTI failures since it pretty-prints PSTATE.BTYPE in the crash
log.

Cc: Mark Brown <broonie@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20200615113458.2884-1-will@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/traps.c

index 50cc30a..24f2af7 100644 (file)
@@ -813,6 +813,7 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr)
                handler[reason], smp_processor_id(), esr,
                esr_get_class_string(esr));
 
+       __show_regs(regs);
        local_daif_mask();
        panic("bad mode");
 }