Skip site navigation (1)Skip section navigation (2)
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>