Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Sep 2014 01:41:42 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   Re: A different PowerMac G5 boot crash but with a backtrace: fails at .pvo_vaddr_compare+0x14, instruction ld r0, r4, 0x58
Message-ID:  <8703D7F8-126C-4677-8892-DF6A17DEDB17@dsl-only.net>
In-Reply-To: <A98054D5-4213-4CEC-B1A7-ABDDE2A3CFE9@dsl-only.net>
References:  <A98054D5-4213-4CEC-B1A7-ABDDE2A3CFE9@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
As I understand the reported but unusual pvo_vaddr_compare point of =
failure was before the usual "before Copyright notice" (ofwcall) crash. =
In other words:

.pvo_vaddr_compare+0x14, instruction ld r0, r4, 0x58 [or ld r0,88(r4) in =
an alternate notation]
.pvo_tree_RB_FIND+0x38
.moea64_dev_direct_mapped_0x90
.pmap_dev_direct_mapped+0x84
.bs_remap_earlyboot_0x6c
.moea64_late_bootstrap+0x178
.moea64_bootstrap_native+0x120
.pmap_bootstrap+0xac
.powerpc_init+0x514
btext+0xa8

happens before the usual "before Copyright notice" crash point:

(rest of call-chain to ofwcall for peer not shown)
.OF_peer+0x8c
.powermac_smp_first_cpu+0x3c
.platform_smp_first_cpu+0x78
.cpu_mp_setmaxid+0x2c (via .mpt_fc_els_reply_handler+0x2e68 that is not =
explicitly listed)
.mp_setmaxid+0x14
.mi_startup0x10c
btext+0xbc

=3D=3D=3D
Mark Millard
markmi at dsl-only.net

On Sep 24, 2014, at 12:20 AM, Mark Millard <markmi at dsl-only.net> =
wrote:

powerpc64/GENERIC64 on PowerMac G5 Quad Core: I caught a different =
kernel/boot crash with a backtrace, failing at .pvo_vaddr_compare+0x14: =
ld r0,88(r4). Unfortunately with my current "show register; bt; show =
regster/u; bt/u" the beginning of the text from before the show's =
scrolled off screen. Still...

register r4: 0x2e123e8
dar: 2e12440

srr0: 0x8b8648 .pvo_vaddr_compare+0x14
lr: 0x98b8fac .pvo_tree_RB_FIND_0x38
ctr: 0x883840 moea64_dev_direct_mapped

.pvo_vaddr_compare+0x14, instruction ld r0, r4, 0x58 [or ld r0,88(r4) in =
an alternate notation]
.pvo_tree_RB_FIND+0x38
.moea64_dev_direct_mapped_0x90
.pmap_direct_mapped+0x84
.bs_remap_earlyboot_0x6c
.moea64_late_bootstrap+0x178
.moea64_bootstrap_native+0x120
.pmap_bootstrap+0xac
.powerpc_init+0x514
btext+0xa8

srr1: 9000000000003030
cr: 2400024
xer 0
dsisr: 40000000

r0: 0x98008000
r1: 0xbda9f0 tmpstk+0x39f0
r2: 0xd18468
r3: 0xbdab38 tmpstk+0x3938
r4: 0x2e123e8
r5: 0xe10000 __pcpu+0xa80
r6: 0
r7: 0
r8: 0xf
r9: 0x98008000
r10: 0x1
r11: 0
r12: 0x10000000
r13: 0xbdd290 thread0
r14-r19: all 0
r20: 0x10c1000
r21: 0x4
r22: 0x1801bd4
r23: 0xe42bf0 earlyboot_mapping
r24: 0
r25: 0
r26: 0x100000 kernbase
r27: 0xe42bf0 earlyboot_mapping
r28: 0xe10000 __pcpu_0xa80
r29: 0xbdab38 tmpstk+0x3938
r30: 0x2e123e8
r31: 0xbda9f0 tmpstk+0x39f0



Context:

FreeBSD FBSDG5M1 10.1-BETA2 FreeBSD 10.1-BETA2 #4 r271944M: Tue Sep 23 =
22:39:02 PDT 2014     root@FBSDG5M1:/usr/obj/usr/src/sys/GENERIC64  =
powerpc

$ svnlite diff /usr/src/sys
Index: /usr/src/sys/ddb/db_script.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- /usr/src/sys/ddb/db_script.c	(revision 271944)
+++ /usr/src/sys/ddb/db_script.c	(working copy)
@@ -319,10 +319,25 @@
 {
 	char scriptname[DB_MAXSCRIPTNAME];
=20
+	/* HACK!!! : Additional lines to force a basic default script to =
exist.
+	 * Will dump information even if ddb input is not available for =
early crash.
+	 * Used to get more information about PowerMac G5 "before =
Copyright" hangs.
+	 */
+	struct ddb_script *dsp =3D =
db_script_lookup(DB_SCRIPT_KDBENTER_DEFAULT);
+	if (!dsp) db_script_set(DB_SCRIPT_KDBENTER_DEFAULT, "show =
registers; bt; show registers/u; bt/u");
+
 	snprintf(scriptname, sizeof(scriptname), "%s.%s",
 	    DB_SCRIPT_KDBENTER_PREFIX, eventname);
 	if (db_script_exec(scriptname, 0) =3D=3D ENOENT)
 		(void)db_script_exec(DB_SCRIPT_KDBENTER_DEFAULT, 0);
+
+	/* HACK!!! : Additional lines to always use the default script,
+	 *           even if scriptname existed and was executed.
+	 * Will dump information even if ddb input is not available for =
early crash.
+	 * Used to get more information about PowerMac G5 "before =
Copyright" hangs.
+	 */
+	else
+		(void)db_script_exec(DB_SCRIPT_KDBENTER_DEFAULT, 0);
 }
=20
 /*-
Index: /usr/src/sys/powerpc/conf/GENERIC64
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- /usr/src/sys/powerpc/conf/GENERIC64	(revision 271944)
+++ /usr/src/sys/powerpc/conf/GENERIC64	(working copy)
@@ -76,6 +76,8 @@
 # Debugging support.  Always need this:
 options 	KDB			# Enable kernel debugger =
support.
 options 	KDB_TRACE		# Print a stack trace for a =
panic.
+options 	DDB
+options 	GDB
=20
 # Make an SMP-capable kernel by default
 options 	SMP			# Symmetric MultiProcessor =
Kernel







=3D=3D=3D
Mark Millard
markmi at dsl-only.net





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8703D7F8-126C-4677-8892-DF6A17DEDB17>