svn commit: r357499 - head/sys/arm64/arm64
Andrew Turner
andrew at FreeBSD.org
Tue Feb 4 12:33:00 UTC 2020
Author: andrew
Date: Tue Feb 4 12:33:00 2020
New Revision: 357499
URL: https://svnweb.freebsd.org/changeset/base/357499
Log:
Print useful debug data on unhandled kernel fault on arm64
When panicing because of an unhandled data abort from the kernel it is
useful to know the register state and faulting address to aid debugging.
Print these registers before calling panic.
Sponsored by: DARPA, AFRL
Modified:
head/sys/arm64/arm64/trap.c
Modified: head/sys/arm64/arm64/trap.c
==============================================================================
--- head/sys/arm64/arm64/trap.c Tue Feb 4 09:12:12 2020 (r357498)
+++ head/sys/arm64/arm64/trap.c Tue Feb 4 12:33:00 2020 (r357499)
@@ -357,12 +357,15 @@ do_el1h_sync(struct thread *td, struct trapframe *fram
far = READ_SPECIALREG(far_el1);
dfsc = esr & ISS_DATA_DFSC_MASK;
if (dfsc < nitems(abort_handlers) &&
- abort_handlers[dfsc] != NULL)
+ abort_handlers[dfsc] != NULL) {
abort_handlers[dfsc](td, frame, esr, far, 0);
- else
+ } else {
+ print_registers(frame);
+ printf(" far: %16lx\n", far);
panic("Unhandled EL1 %s abort: %x",
exception == EXCP_INSN_ABORT ? "instruction" :
"data", dfsc);
+ }
break;
case EXCP_BRK:
#ifdef KDTRACE_HOOKS
More information about the svn-src-all
mailing list