NetBSD Problem Report #59177
From www@netbsd.org Fri Mar 14 15:48:26 2025
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits)
client-signature RSA-PSS (2048 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 5CE991A9239
for <gnats-bugs@gnats.NetBSD.org>; Fri, 14 Mar 2025 15:48:26 +0000 (UTC)
Message-Id: <20250314154824.ED5771A923C@mollari.NetBSD.org>
Date: Fri, 14 Mar 2025 15:48:24 +0000 (UTC)
From: randrianasulu@gmail.com
Reply-To: randrianasulu@gmail.com
To: gnats-bugs@NetBSD.org
Subject: NetBSD/macppc -current fails to boot on qemu
X-Send-Pr-Version: www-1.0
>Number: 59177
>Category: port-macppc
>Synopsis: NetBSD/macppc -current fails to boot on qemu
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-macppc-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Mar 14 15:50:00 +0000 2025
>Last-Modified: Sat May 31 14:00:01 +0000 2025
>Originator: Andrew Randrianasulu
>Release: 10.1
>Organization:
n/a
>Environment:
tbsd10 10.1_STABLE NetBSD 10.1_STABLE (GENERIC) #0: Sun Jan 12 12:03:45 UTC 2025 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
>Description:
Tried to build NetBSD from source using this build.sh lines:
./build.sh -U -j8 -O ~/obj -m macppc -a powerpc tools
./build.sh -U -j8 -O ~/obj -m macppc -a powerpc release
./build.sh -U -j8 -O ~/obj -m macppc -a powerpc iso-image
They all report success, but resulting iso fails early in boot process:
netbsd10$ qemu-system-ppc -cdrom ~/obj/releasedir/images/NetBSD-10.99.12-macppc.iso -L /usr/pkg/share/qemu/ -boot d -prom-env 'boot-device=cd:,ofwboot.xcf /netbsd.macppc -c ' -d guest_errors,unimp -nographic
Invalid write at addr 0x3A5288, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A528C, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A5290, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A5294, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A5298, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A529C, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52A0, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52A4, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52A8, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52AC, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52B0, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52B4, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52B8, size 4, region 'ppc_heathrow.bios', reason: rejected
Invalid write at addr 0x3A52BC, size 4, region 'ppc_heathrow.bios', reason: re
>> =============================================================
>> OpenBIOS 1.1 [Mar 7 2023 22:21]
>> Configuration device id QEMU version 1 machine id 2
>> CPUs: 1
>> Memory: 128M
>> UUID: 00000000-0000-0000-0000-000000000000
>> CPU type PowerPC,750
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying cd:,ofwboot.xcf...
>> switching to new context:
>> NetBSD/macppc OpenFirmware Boot, Revision 1.15 (Fri Mar 14 14:31:24 UTC 2025)
>> Open Firmware version 3.x
>> Open Firmware running in virtual-mode.
6898956+117828=0x6b1554
start=0x100000
[ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[ 1.0000000] 2024, 2025
[ 1.0000000] The NetBSD Foundation, Inc. All rights reserved.
[ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.
[ 1.0000000] NetBSD 10.99.12 (INSTALL) #10: Fri Mar 14 18:23:55 MSK 2025
[ 1.0000000] guest@netbsd10:/home/guest/obj/sys/arch/macppc/compile/INSTALL
[ 1.0000000] total memory = 128 MB
[ 1.0000000] avail memory = 107 MB
[ 1.0000000] found heathrow PIC at 81080000
[ 1.0000000] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000000] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
EXIT[ 1.0000190] trap: kernel read DSI trap @ 0x41a2fedc by 0xfff1059c (DSISR 0x40000000, err=14), lr 0xfff1055c
[ 1.0000190] Skipping crash dump on recursive panic
[ 1.0000190] panic: trap
[ 1.0000190] rebooting
and so on ...
>How-To-Repeat:
Install qemu from pkgsrc
Build -current version of NetBSD/macppc on NetBSD 10.1/amd64
try to boot resulted iso on qemu.
>Fix:
>Audit-Trail:
From: Tobias Nygren <tnn@NetBSD.org>
To: gnats-bugs@netbsd.org
Cc: Jason Thorpe <thorpej@me.com>
Subject: Re: port-macppc/59177: NetBSD/macppc -current fails to boot on qemu
Date: Sat, 31 May 2025 12:36:54 +0200
Since NetBSD 9 boots fine in QEMU, I spent last evening bisecting
src between 2020 and 2025. Basically following this guide[1] and
afterwards repetitively swapping out the kernel through a vnd(4) mount.
The first sign of problems appeared February 2021, where we transition
from a working kernel to one that panics with mutex_vector_enter:
locking against myself during uvm_fault_internal very early.
This commit sequence is a candidate for when the regression was introduced:
https://mail-index.netbsd.org/source-changes/2021/02/24/msg127234.html
https://mail-index.netbsd.org/source-changes/2021/02/24/msg127235.html
https://mail-index.netbsd.org/source-changes/2021/02/24/msg127236.html
[1] https://www.reddit.com/r/BSD/comments/a0re4e/tip_to_install_netbsdmacppc_in_qemusystemppc/
From: Tobias Nygren <tnn@NetBSD.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: port-macppc/59177: NetBSD/macppc -current fails to boot on qemu
Date: Sat, 31 May 2025 15:56:23 +0200
This is a multi-part message in MIME format.
--Multipart=_Sat__31_May_2025_15_56_23_+0200_MWlCQJBXL+3Nmzpc
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
I reverted the asm portion of the suspect change locally and HEAD now boots.
It was pointed out privately that this is likely some QEMU firmware bug.
Anyway, I'll attach the diff for reference.
# uname -a
NetBSD 10.99.14 NetBSD 10.99.14 (GENERIC) #6: Sat May 31 15:48:46 CEST 2025 tnn@altra.rymdfartsverket.se:/work/macppc-bisect/HEAD/obj/sys/arch/macppc/compile/GENERIC macppc
--Multipart=_Sat__31_May_2025_15_56_23_+0200_MWlCQJBXL+3Nmzpc
Content-Type: text/plain;
name="powerpc.diff.txt"
Content-Disposition: attachment;
filename="powerpc.diff.txt"
Content-Transfer-Encoding: 7bit
? sys/arch/powerpc/powerpc/wd
? sys/arch/powerpc/powerpc/wdwd
Index: sys/arch/powerpc/oea/ofw_subr.S
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/oea/ofw_subr.S,v
retrieving revision 1.20
diff -p -u -r1.20 ofw_subr.S
--- sys/arch/powerpc/oea/ofw_subr.S 28 Feb 2021 19:01:11 -0000 1.20
+++ sys/arch/powerpc/oea/ofw_subr.S 31 May 2025 13:49:56 -0000
@@ -52,7 +52,7 @@
/* MSR used in OpenFirmware */
.globl ofwmsr
- .comm ofwmsr,4,4
+ .comm ofwmsr,20,4
#ifdef FIRMWORKSBUGS
.lcomm ofwreal_incharge,4,4
@@ -101,7 +101,16 @@ ENTRY_NOPROFILE(ofwinit)
/* Save the MSR that OpenFirmware is using. */
mfmsr %r0
lis %r9,ofwmsr@ha
- stw %r0,ofwmsr@l(%r9)
+ stwu %r0,ofwmsr@l(%r9)
+
+ mfsprg0 %r0 /* save SPRGs */
+ stw %r0,4(%r9)
+ mfsprg1 %r0
+ stw %r0,8(%r9)
+ mfsprg2 %r0
+ stw %r0,12(%r9)
+ mfsprg3 %r0
+ stw %r0,16(%r9)
lis %r8,OF_buffer@ha
addi %r8,%r8,OF_buffer@l
@@ -148,6 +157,19 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
*/
stwu %r1,-48(%r1)
+ lis %r4,ofentry@ha /* get firmware entry point */
+ lwz %r4,ofentry@l(%r4)
+ mtlr %r4
+
+ mfsprg0 %r5 /* save current sprg0 (curcpu) */
+ stw %r5,16(%r1)
+ mfsprg1 %r5 /* save current sprg1 */
+ stw %r5,20(%r1)
+ mfsprg2 %r5 /* save current sprg1 */
+ stw %r5,24(%r1)
+ mfsprg3 %r5 /* save current sprg3 */
+ stw %r5,28(%r1)
+
#ifdef FIRMWORKSBUGS
lis %r4,ofwreal_incharge@ha
lwz %r4,ofwreal_incharge@l(%r4)
@@ -195,33 +217,21 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
cmpwi %r5,0
bne 1b
2:
- /* curcpu()->ci_battable = &ofw_battable */
- GET_CPUINFO(%r4)
- lis %r5,_C_LABEL(ofw_battable)@ha
- addi %r5,%r5,_C_LABEL(ofw_battable)@l
- stw %r5,CI_BATTABLE(%r4)
-
- lis %r4,ofentry@ha /* get firmware entry point */
- lwz %r4,ofentry@l(%r4)
- mtlr %r4
-
- lis %r4,ofwmsr@ha /* load Open Firmware MSR */
- lwz %r5,ofwmsr@l(%r4)
+ lis %r4,ofwmsr+16@ha /* Open Firmware msr + sprg[0-3] */
+ lwzu %r5,ofwmsr+16@l(%r4)
+ mtsprg3 %r5
+ lwz %r5,-4(%r4)
+ mtsprg2 %r5
+ lwz %r5,-8(%r4)
+ mtsprg1 %r5
+ lwz %r5,-12(%r4)
+ mtsprg0 %r5
+ lwz %r5,-16(%r4)
mtmsr %r5
isync
blrl /* call Open Firmware */
- li %r0,0 /* ensure disable MMU is disabled */
- mtmsr %r0
- isync
-
- /* curcpu()->ci_battable = &battable */
- GET_CPUINFO(%r4)
- lis %r5,_C_LABEL(battable)@ha
- addi %r5,%r5,_C_LABEL(battable)@l
- stw %r5,CI_BATTABLE(%r4)
-
lis %r4,clsrsave@ha /* restore saved SRs */
addi %r4,%r4,clsrsave@l
li %r5,0
@@ -236,6 +246,15 @@ ENTRY_NOPROFILE(openfirmware_trampoline)
mtmsr %r4
isync
4:
+ lwz %r5,16(%r1) /* restore saved sprgs (curcpu) */
+ mtsprg0 %r5
+ lwz %r5,20(%r1)
+ mtsprg1 %r5
+ lwz %r5,24(%r1)
+ mtsprg2 %r5
+ lwz %r5,28(%r1)
+ mtsprg3 %r5
+
addi %r1,%r1,48 /* pop stack frame and save area */
lwz %r0,4(%r1) /* return address */
mtlr %r0
Index: sys/arch/powerpc/powerpc/trap_subr.S
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/powerpc/trap_subr.S,v
retrieving revision 1.87
diff -p -u -r1.87 trap_subr.S
--- sys/arch/powerpc/powerpc/trap_subr.S 29 Apr 2025 14:33:26 -0000 1.87
+++ sys/arch/powerpc/powerpc/trap_subr.S 31 May 2025 13:49:56 -0000
@@ -268,20 +268,14 @@ _C_LABEL(dsitrap):
rlwinm %r31,%r31,3+(32-BAT_ADDR_SHIFT),BAT_ADDR_SHIFT-3,28
/* get segment * 8 */
- /* Get address of this CPU's current battable */
- GET_CPUINFO(%r30)
- ldreg %r30,CI_BATTABLE(%r30)
-
- /* Add offset to the slot we care about. */
- add %r31,%r31,%r30
-
/* get batu */
- ldreg %r30,0(%r31)
+ addis %r31,%r31,_C_LABEL(battable)@ha
+ ldreg %r30,_C_LABEL(battable)@l(%r31)
mtcr %r30
bf 30,1f /* branch if supervisor valid is
false */
/* get batl */
- ldreg %r31,SZREG(%r31)
+ ldreg %r31,_C_LABEL(battable)+SZREG@l(%r31)
/* We randomly use the highest two bat registers here */
mftb %r28
mtcr %r28
@@ -369,21 +363,15 @@ _C_LABEL(dsi601trap):
mfdar %r31 /* get fault address */
rlwinm %r31,%r31,12,20,28 /* get "segment" battable offset */
- /* Get address of this CPU's current battable */
- GET_CPUINFO(%r30)
- ldreg %r30,CI_BATTABLE(%r30)
-
- /* Add offset to the slot we care about. */
- add %r31,%r31,%r30
-
/* get batl */
- ldreg %r30,SZREG(%r31)
+ addis %r31,%r31,_C_LABEL(battable)@ha
+ ldreg %r30,_C_LABEL(battable)+SZREG@l(%r31)
mtcr %r30
bf 25,1f /* branch if Valid is false,
presently assumes supervisor only */
/* get batu */
- ldreg %r31,0(%r31)
+ ldreg %r31,_C_LABEL(battable)@l(%r31)
/* We randomly use the highest two bat registers here */
mfspr %r28,SPR_RTCL_R
andi. %r28,%r28,128
--Multipart=_Sat__31_May_2025_15_56_23_+0200_MWlCQJBXL+3Nmzpc--
(Contact us)
$NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2025
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.