A different PowerMac G5 boot crash but with a backtrace: fails at .pvo_vaddr_compare+0x14, instruction ld r0, r4, 0x58
Mark Millard
markmi at dsl-only.net
Tue Sep 30 08:41:48 UTC 2014
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
===
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 at FBSDG5M1:/usr/obj/usr/src/sys/GENERIC64 powerpc
$ svnlite diff /usr/src/sys
Index: /usr/src/sys/ddb/db_script.c
===================================================================
--- /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];
+ /* 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 = 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) == 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);
}
/*-
Index: /usr/src/sys/powerpc/conf/GENERIC64
===================================================================
--- /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
# Make an SMP-capable kernel by default
options SMP # Symmetric MultiProcessor Kernel
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-ppc
mailing list