Date: Tue, 4 Feb 2020 12:33:00 +0000 (UTC) From: Andrew Turner <andrew@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r357499 - head/sys/arm64/arm64 Message-ID: <202002041233.014CX0ie097606@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202002041233.014CX0ie097606>