NetBSD Problem Report #57324
From www@netbsd.org Wed Apr 5 20:29:20 2023
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))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 816D41A9239
for <gnats-bugs@gnats.NetBSD.org>; Wed, 5 Apr 2023 20:29:20 +0000 (UTC)
Message-Id: <20230405202918.A2D7A1A923A@mollari.NetBSD.org>
Date: Wed, 5 Apr 2023 20:29:18 +0000 (UTC)
From: bbartlomiej.mail@gmail.com
Reply-To: bbartlomiej.mail@gmail.com
To: gnats-bugs@NetBSD.org
Subject: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
X-Send-Pr-Version: www-1.0
>Number: 57324
>Category: port-arm
>Synopsis: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: mrg
>State: feedback
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Apr 05 20:30:00 +0000 2023
>Closed-Date:
>Last-Modified: Sun Oct 29 16:55:01 +0000 2023
>Originator: Bartek Krawczyk
>Release: 10.99.2
>Organization:
>Environment:
NetBSD rpi3 10.99.2 NetBSD 10.99.2 (GENERIC64) #0: Sun Apr 2 15:06:06 UTC 2023 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/evbarm/compile/GENERIC64 evbarm
>Description:
10.99.2 from 02.04.2023 fails to find the root wedge using the root=NAME=netbsd-root argument passed to it from the bootloader. It works fine on 10.0_BETA. The only thing changed is the kernel itself. After answering with "dk1" during boot, it continues to boot fine (although asking about /sbin/init). This is a Raspberry Pi 3 installation using an official image of 10.0_BETA from https://nycdn.netbsd.org/pub/arm/
[ 1.4856975] sdmmc0: SD card status: 4-bit, C10, U3, V30, A2
[ 1.4967611] ld0 at sdmmc0: <0x1d:0x4144:SD :0x02:0xd7022ac5:0x13c>
[ 1.4967611] ld0: 117 GB, 15371 cyl, 255 head, 63 sec, 512 bytes/sect x 246947840 sectors
[ 1.5157040] dk0 at ld0: "EFI", 163840 blocks at 32768, type: msdos
[ 1.5157040] dk1 at ld0: "netbsd-root", 246743040 blocks at 196608, type: ffs
[ 1.5257030] ld0: 4-bit width, High-Speed/SDR25, 50.000 MHz
[ 1.5857075] sdmmc1: 4-bit width, 50.000 MHz
[ 1.5957106] sdmmc1: SDIO function
[ 1.5957106] bwfm0 at sdmmc1 function 1
[ 1.6057193] (manufacturer 0x2d0, product 0xa9a6) at sdmmc1 function 2 not configured
[ 1.6157274] (manufacturer 0x2d0, product 0xa9a6, standard function interface code 0x2) at sdmmc1 function 3 not configured
[ 2.0157606] uhub1 at uhub0 port 1: vendor 0424 (0x0424) product 2514 (0x2514), class 9/0, rev 2.00/b.b3, addr 2
[ 2.0257620] uhub1: multiple transaction translators
[ 2.8558321] uhub2 at uhub1 port 1: vendor 0424 (0x0424) product 2514 (0x2514), class 9/0, rev 2.00/b.b3, addr 3
[ 2.8658342] uhub2: multiple transaction translators
[ 3.2058625] uhub0: illegal enable change, port 1
[ 3.2158641] swwdog0: software watchdog initialized
[ 3.2258697] WARNING: 3 errors while detecting hardware; check system log.
[ 3.2258697] boot device: ld0
[ 3.2369263] root on ld0a dumps on ld0b
[ 3.2369263] vfs_mountroot: can't open root device
[ 3.2369263] cannot mount root, error = 16
[ 3.2497924] root device (default ld0a):
[ 4.1352268] dump device (default ld0b):
[ 4.5673969] file system (default generic):
[ 5.2860701] root on ld0a dumps on ld0b
[ 5.2860701] vfs_mountroot: can't open root device
[ 5.2860701] cannot mount root, error = 16
[ 5.2981452] root device (default ld0a): uhub2: port 1 reset failed
[ 5.7558228] dump device (default ld0b):
[ 6.6264810] file system (default generic):
[ 7.0067687] root on ld0a dumps on ld0b
[ 7.0067687] vfs_mountroot: can't open root device
[ 7.0067687] cannot mount root, error = 16
[ 7.0187698] root device (default ld0a): dk1
[ 8.4815674] dump device:
[ 9.4116857] file system (default generic): ffs
[ 10.5739479] root on dk1
[ 10.5739479] kern.module.path=/stand/evbarm/10.99.2/modules
[ 10.5870282] WARNING: no TOD clock present
[ 10.5870282] vchiq0: interrupting on icu irq 66
[ 10.5870282] WARNING: using filesystem time
[ 10.5997254] WARNING: CHECK AND RESET THE DATE!
[ 10.5997254] vcaudio0 at vchiq0: auds
[ 10.6070300] audio0 at vcaudio0: playback
[ 10.6170331] audio0: slinear_le:16 -> slinear_le:16 2ch 48000Hz, blk 7680 bytes (40ms) for playback
[ 10.6270318] spkr0 at audio0: PC Speaker (synthesized)
[ 10.6270318] wsbell at spkr0 not configured
[ 12.4172682] bwfm0: CHIPACTIVE
[ 12.5172821] bwfm0: address b8:27:eb:e4:30:c8
[ 12.5172821] bwfm0: wl0: Mar 1 2015 07:29:38 version 7.45.18 (r538002) FWID 01-6a2c8ad4
[ 12.5372856] init path (default /sbin/init):
[ 12.9500747] init: trying /sbin/init
The rest of the config is:
rpi3# cd /boot
rpi3# cat config.txt
#
upstream_kernel=1
#
arm_64bit=1
os_prefix=dtb/broadcom/
cmdline=../../cmdline.txt
kernel=/netbsd.img
kernel_address=0x200000
enable_uart=1
force_turbo=0
rpi3# cat cmdline.txt
root=NAME=netbsd-root
rpi3# cat /etc/fstab
# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
NAME=netbsd-root / ffs rw,noatime,log 1 1
NAME=EFI /boot msdos rw 1 1
ptyfs /dev/pts ptyfs rw
procfs /proc procfs rw
tmpfs /var/shm tmpfs rw,-m1777,-sram%25
/swap none swap sw,dp 0 0
Why is it not reading the label "netbsd-root" properly comparing to 10.0_BETA?
After reverting back to netbsd.img kernel from 10.0_BETA official image it boots just fine:
[ 3.2195873] WARNING: 3 errors while detecting hardware; check system log.
[ 3.2349937] boot device: ld0
[ 3.2349937] root on dk1
[ 3.2404133] root file system type: ffs
[ 3.2504144] kern.module.path=/stand/evbarm/10.0/modules
[ 3.2504144] WARNING: no TOD clock present
[ 3.2504144] vchiq0: interrupting on icu irq 66
[ 3.2604506] WARNING: using filesystem time
[ 3.2690829] WARNING: CHECK AND RESET THE DATE!
[ 3.2735786] vcaudio0 at vchiq0: auds
[ 3.2804538] audio0 at vcaudio0: playback
[ 3.2804538] audio0: slinear_le:16 -> slinear_le:16 2ch 48000Hz, blk 7680 bytes (40ms) for playback
[ 3.2904532] spkr0 at audio0: PC Speaker (synthesized)
[ 3.3004515] wsbell at spkr0 not configured
[ 4.1405815] mue0 at uhub2 port 1
[ 4.1505972] mue0: SMSC (0x0424) LAN7800 USB 3.1 gigabit ethernet device (0x7800), rev 2.10/3.00, addr 4
[ 4.4406211] mue0: LAN7800 id 0x7800 rev 0x2
[ 4.4506233] ukphy0 at mue0 phy 1: SMSC SMSC LAN8742 10/100 media interface (OUI 0x00800f, model 0x0013), rev. 2
[ 4.4653560] ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
[ 4.4706820] mue0: Ethernet address b8:27:eb:b1:65:9d
[ 5.0807302] bwfm0: CHIPACTIVE
[ 5.1807386] bwfm0: address b8:27:eb:e4:30:c8
[ 5.1807386] bwfm0: wl0: Mar 1 2015 07:29:38 version 7.45.18 (r538002) FWID 01-6a2c8ad4
both kernels get the same parameters:
10.0_BETA:
rpi3# ofctl /chosen
[Caching 124 nodes and 786 properties]
bootargs 62636d32 3730385f 66622e66 62776964 bcm2708_fb.fbwid
0010: 74683d36 35362062 636d3237 30385f66 th=656 bcm2708_f
0020: 622e6662 68656967 68743d34 31362062 b.fbheight=416 b
0030: 636d3237 30385f66 622e6662 73776170 cm2708_fb.fbswap
0040: 3d312064 6d612e64 6d616368 616e733d =1 dma.dmachans=
0050: 30783766 33352062 636d3237 30392e62 0x7f35 bcm2709.b
0060: 6f617264 7265763d 30786130 32306433 oardrev=0xa020d3
0070: 2062636d 32373039 2e736572 69616c3d bcm2709.serial=
0080: 30786365 62313635 39642062 636d3237 0xceb1659d bcm27
0090: 30392e75 6172745f 636c6f63 6b3d3438 09.uart_clock=48
00a0: 30303030 30302062 636d3237 30392e64 000000 bcm2709.d
00b0: 69736b5f 6c65645f 6770696f 3d323920 isk_led_gpio=29
00c0: 62636d32 3730392e 6469736b 5f6c6564 bcm2709.disk_led
00d0: 5f616374 6976655f 6c6f773d 3020736d _active_low=0 sm
00e0: 73633935 78782e6d 61636164 64723d42 sc95xx.macaddr=B
00f0: 383a3237 3a45423a 42313a36 353a3944 8:27:EB:B1:65:9D
0100: 2076635f 6d656d2e 6d656d5f 62617365 vc_mem.mem_base
0110: 3d307833 65633030 30303020 76635f6d =0x3ec00000 vc_m
0120: 656d2e6d 656d5f73 697a653d 30783430 em.mem_size=0x40
0130: 30303030 30302020 726f6f74 3d4e414d 000000 root=NAM
0140: 453d6e65 74627364 2d726f6f 7400.... E=netbsd-root.
kaslr-seed a13996ff 1117f038 ........ ........ .9.....8
name 63686f73 656e00.. ........ ........ "chosen"
stdout-path 73657269 616c313a 31313532 30306e38 serial1:115200n8
0010: 00...... ........ ........ ........ .
10.99.2 -current:
rpi3# ofctl /chosen
[Caching 124 nodes and 786 properties]
bootargs 62636d32 3730385f 66622e66 62776964 bcm2708_fb.fbwid
0010: 74683d36 35362062 636d3237 30385f66 th=656 bcm2708_f
0020: 622e6662 68656967 68743d34 31362062 b.fbheight=416 b
0030: 636d3237 30385f66 622e6662 73776170 cm2708_fb.fbswap
0040: 3d312064 6d612e64 6d616368 616e733d =1 dma.dmachans=
0050: 30783766 33352062 636d3237 30392e62 0x7f35 bcm2709.b
0060: 6f617264 7265763d 30786130 32306433 oardrev=0xa020d3
0070: 2062636d 32373039 2e736572 69616c3d bcm2709.serial=
0080: 30786365 62313635 39642062 636d3237 0xceb1659d bcm27
0090: 30392e75 6172745f 636c6f63 6b3d3438 09.uart_clock=48
00a0: 30303030 30302062 636d3237 30392e64 000000 bcm2709.d
00b0: 69736b5f 6c65645f 6770696f 3d323920 isk_led_gpio=29
00c0: 62636d32 3730392e 6469736b 5f6c6564 bcm2709.disk_led
00d0: 5f616374 6976655f 6c6f773d 3020736d _active_low=0 sm
00e0: 73633935 78782e6d 61636164 64723d42 sc95xx.macaddr=B
00f0: 383a3237 3a45423a 42313a36 353a3944 8:27:EB:B1:65:9D
0100: 2076635f 6d656d2e 6d656d5f 62617365 vc_mem.mem_base
0110: 3d307833 65633030 30303020 76635f6d =0x3ec00000 vc_m
0120: 656d2e6d 656d5f73 697a653d 30783430 em.mem_size=0x40
0130: 30303030 30302020 726f6f74 3d4e414d 000000 root=NAM
0140: 453d6e65 74627364 2d726f6f 7400.... E=netbsd-root.
kaslr-seed f8f620b9 0601e0a0 ........ ........ .. .....
name 63686f73 656e00.. ........ ........ "chosen"
stdout-path 73657269 616c313a 31313532 30306e38 serial1:115200n8
0010: 00...... ........ ........ ........ .
>How-To-Repeat:
Install 10.0_BETA image on Raspberry Pi 3. Update kernel to -current.
>Fix:
>Release-Note:
>Audit-Trail:
From: David Holland <dholland-bugs@netbsd.org>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Sun, 30 Apr 2023 03:32:15 +0000
Not sent to gnats. Send PR replies/comments to gnats-bugs@. Sometimes
when replying to yourself you have to change the address explicitly.
------
From: Bartek Krawczyk <bbartlomiej.mail@gmail.com>
To: port-arm-maintainer@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge
using name on Raspberry Pi 3 official image
Date: Sat, 15 Apr 2023 10:30:03 +0200
On 05/04/2023 22:30, bbartlomiej.mail@gmail.com wrote:
> > Number: 57324
> > Category: port-arm
> > Synopsis: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
> > Confidential: no
> > Severity: serious
> > Priority: medium
> > Responsible: port-arm-maintainer
> > State: open
> > Class: sw-bug
> > Submitter-Id: net
> > Arrival-Date: Wed Apr 05 20:30:00 +0000 2023
> > Originator: Bartek Krawczyk
> > Release: 10.99.2
> > Organization:
> > Environment:
> NetBSD rpi3 10.99.2 NetBSD 10.99.2 (GENERIC64) #0: Sun Apr 2 15:06:06 UTC 2023 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/evbarm/compile/GENERIC64 evbarm
> > Description:
> 10.99.2 from 02.04.2023 fails to find the root wedge using the root=NAME=netbsd-root argument passed to it from the bootloader. It works fine on 10.0_BETA. The only thing changed is the kernel itself. After answering with "dk1" during boot, it continues to boot fine (although asking about /sbin/init). This is a Raspberry Pi 3 installation using an official image of 10.0_BETA from https://nycdn.netbsd.org/pub/arm/
I have tested it on amd64 and can't replicate this problem neither on 10.99.2
nor 10.99.3 (14.04.2023) so it seems to be arm aarch64 specific or even
Raspberry Pi 3 specific.
On my amd64 desktop it manages to find the root wedge among many more wedges:
[ 1.919219] dk0 at ld0: "EFI system partition", 204800 blocks at 2048,
type: msdos
[ 1.919219] dk1 at ld0: "Microsoft reserved partition", 32768 blocks at
206848, type: <unknown>
[ 1.919219] dk2 at ld0: "Basic data partition", 1952002048 blocks at
239616, type: ntfs
[ 1.919219] dk3 at ld0: "d16e48e8-1af5-4885-b2f8-9004eeb3034d", 1280000
blocks at 1952241664, type: <unknown>
[ 2.069218] dk4 at wd0: "EFI System Partition", 1228800 blocks at 2048,
type: msdos
[ 2.069218] dk5 at wd0: "7bd3949f-33e0-4ada-9987-dbc17e2bb0d2", 2097152
blocks at 1230848, type: ext2fs
[ 2.069218] dk6 at wd0: "6f47e461-d77c-4b4b-9df0-da0774e75c0c", 465532928
blocks at 3328000, type: ext2fs
[ 2.069218] dk7 at wd1: "78fd4ff6-1604-4f63-beba-84a601380172", 262144
blocks at 2048, type: msdos
[ 2.069218] dk8 at wd1: "8e6a55ef-5972-4b53-a6b5-ffb613ee1b75", 401670144
blocks at 264192, type: ffs
[ 2.069218] dk9 at wd1: "5dbf11ea-4737-473b-a72e-70f874db536b", 66927759
blocks at 401934336, type: swap
[ 4.889199] root on dk8 dumps on dk9
bash-5.2# cat /etc/fstab
# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
NAME=8e6a55ef-5972-4b53-a6b5-ffb613ee1b75 / ffs
rw,log,noatime 1 1
NAME=5dbf11ea-4737-473b-a72e-70f874db536b none swap sw,dp
0 0
#tmpfs /tmp tmpfs rw,-m=1777,-s=ram%25
kernfs /kern kernfs rw
ptyfs /dev/pts ptyfs rw
procfs /proc procfs rw
tmpfs /var/shm tmpfs rw,-m1777,-sram%25
bash-5.2# cat /boot.cfg
menu=Boot normally:gop 0;rndseed /var/db/entropy-file;boot
menu=Boot single user:gop 0;rndseed /var/db/entropy-file;boot -s
menu=Drop to boot prompt:prompt
default=1
timeout=5
clear=1
How does NetBSD kernel detect the root disk?
--
Regards
Bartek Krawczyk
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
gnats-admin@netbsd.org
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Wed, 25 Oct 2023 00:53:21 +0000
On 2023/04/05 20:30, bbartlomiej.mail@gmail.com wrote:
> [ 3.2258697] boot device: ld0
> [ 3.2369263] root on ld0a dumps on ld0b
> [ 3.2369263] vfs_mountroot: can't open root device
> [ 3.2369263] cannot mount root, error = 16
I've confirmed that NetBSD-current/evbarm-aarch64 cannot detect root
device correctly, and now NetBSD-10.0_BETA/evbarm-aarch64 (202310212330Z)
fails to detect root device correctly after arch/evbarm/evbarm/autoconf.c
changes on 20 Oct.
From: matthew green <mrg@eterna.com.au>
To: sc.dying@gmail.com, bbartlomiej.mail@gmail.com
Cc: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
gnats-admin@netbsd.org
Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 08:01:25 +1100
sc.dying@gmail.com writes:
> On 2023/04/05 20:30, bbartlomiej.mail@gmail.com wrote:
> > [ 3.2258697] boot device: ld0
> > [ 3.2369263] root on ld0a dumps on ld0b
> > [ 3.2369263] vfs_mountroot: can't open root device
> > [ 3.2369263] cannot mount root, error = 16
>
> I've confirmed that NetBSD-current/evbarm-aarch64 cannot detect root
> device correctly, and now NetBSD-10.0_BETA/evbarm-aarch64 (202310212330Z)
> fails to detect root device correctly after arch/evbarm/evbarm/autoconf.c
> changes on 20 Oct.
hmmm, i thought that mlelstv's fdt_machdep.c revision 1.101 fixed that,
but i guess there's a problem still.
root detection is finding the real device, but in the above case it is
choosing disklabel/mbr style naming, when this doesn't have a label,
but should be choosing the wedge (dkN).
i wonder if the problem is actually in init_main.c's
rootconf_handle_wedges() where it tries to use booted_partition if
booted_nblks == 0, and i see that it also wants booted_startblk set,
but evbarm doesn't set these of these, only booted_device, where as
here booted_device already is correctly set.
does this reproduce easily in eg qemu? also what things in /chosen
are called either "netbsd,gpt-guid" or "netbsd,gpt-label" here?
one or the other needs to exist for gpt disk boot.
thanks.
.mrg.
Responsible-Changed-From-To: port-arm-maintainer->mrg
Responsible-Changed-By: mrg@NetBSD.org
Responsible-Changed-When: Fri, 27 Oct 2023 22:47:45 +0000
Responsible-Changed-Why:
my changes caused this.
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
gnats-admin@netbsd.org, bbartlomiej.mail@gmail.com
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Fri, 27 Oct 2023 23:34:39 +0000
On 2023/10/27 21:05, matthew green wrote:
> The following reply was made to PR port-arm/57324; it has been noted by GNATS.
>
> From: matthew green <mrg@eterna.com.au>
> To: sc.dying@gmail.com, bbartlomiej.mail@gmail.com
> Cc: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
> gnats-admin@netbsd.org
> Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
> Date: Sat, 28 Oct 2023 08:01:25 +1100
>
> sc.dying@gmail.com writes:
> > On 2023/04/05 20:30, bbartlomiej.mail@gmail.com wrote:
> > > [ 3.2258697] boot device: ld0
> > > [ 3.2369263] root on ld0a dumps on ld0b
> > > [ 3.2369263] vfs_mountroot: can't open root device
> > > [ 3.2369263] cannot mount root, error = 16
> >
> > I've confirmed that NetBSD-current/evbarm-aarch64 cannot detect root
> > device correctly, and now NetBSD-10.0_BETA/evbarm-aarch64 (202310212330Z)
> > fails to detect root device correctly after arch/evbarm/evbarm/autoconf.c
> > changes on 20 Oct.
>
> hmmm, i thought that mlelstv's fdt_machdep.c revision 1.101 fixed that,
> but i guess there's a problem still.
>
> root detection is finding the real device, but in the above case it is
> choosing disklabel/mbr style naming, when this doesn't have a label,
> but should be choosing the wedge (dkN).
>
> i wonder if the problem is actually in init_main.c's
> rootconf_handle_wedges() where it tries to use booted_partition if
> booted_nblks == 0, and i see that it also wants booted_startblk set,
> but evbarm doesn't set these of these, only booted_device, where as
> here booted_device already is correctly set.
>
> does this reproduce easily in eg qemu? also what things in /chosen
> are called either "netbsd,gpt-guid" or "netbsd,gpt-label" here?
> one or the other needs to exist for gpt disk boot.
Trying netbsd-10 202310212330Z on real hardware rpi3b...
(I fotgot to mention that I confirmed on Raspberry Pi 3 Model B Rev 1.2.)
[...]
[ 3.0306229] boot device: ld0
[ 3.0306229] root on ld0a dumps on ld0b
[ 3.0306229] vfs_mountroot: can't open root device
[ 3.0406234] cannot mount root, error = 16
[ 3.0406234] root device (default ld0a): ?
[ 81.1066879] use one of: dk0 dk1 ld0[a-p] bwfm0 usmsc0 wedge:EFI wedge:netbsd-root ddb halt reboot
[ 81.1166888] root device (default ld0a): wedge:netbsd-root
[ 136.4110312] dump device:
[ 140.3113460] file system (default generic):
[ 141.0113947] root on dk1
[ 141.0313958] root file system type: ffs
[ 141.0313958] kern.module.path=/stand/evbarm/10.0/modules
[...resize, reboot, and login...]
arm64# ofctl /chosen
[Caching 120 nodes and 768 properties]
bootargs 62636d32 3730385f 66622e66 62776964 bcm2708_fb.fbwid
0010: 74683d36 35362062 636d3237 30385f66 th=656 bcm2708_f
0020: 622e6662 68656967 68743d34 31362062 b.fbheight=416 b
0030: 636d3237 30385f66 622e6662 73776170 cm2708_fb.fbswap
0040: 3d312064 6d612e64 6d616368 616e733d =1 dma.dmachans=
0050: 30783766 33352062 636d3237 30392e62 0x7f35 bcm2709.b
0060: 6f617264 7265763d 30786132 32303832 oardrev=0xa22082
0070: 2062636d 32373039 2e736572 69616c3d bcm2709.serial=
0080: 30783161 61383461 65382062 636d3237 0x1aa84ae8 bcm27
0090: 30392e75 6172745f 636c6f63 6b3d3438 09.uart_clock=48
00a0: 30303030 30302073 6d736339 3578782e 000000 smsc95xx.
00b0: 6d616361 6464723d 42383a32 373a4542 macaddr=B8:27:EB
00c0: xxxxxxxx xxxxxxxx 38207663 5f6d656d xxxxxxxx8 vc_mem
00d0: 2e6d656d 5f626173 653d3078 33656330 .mem_base=0x3ec0
00e0: 30303030 2076635f 6d656d2e 6d656d5f 0000 vc_mem.mem_
00f0: 73697a65 3d307834 30303030 30303020 size=0x40000000
0100: 20726f6f 743d4e41 4d453d6e 65746273 root=NAME=netbs
0110: 642d726f 6f742063 6f6e736f 6c653d66 d-root console=f
0120: 6200.... ........ ........ ........ b.
kaslr-seed 9b472506 209a0f6b ........ ........ .G%. ..k
name 63686f73 656e00.. ........ ........ "chosen"
stdout-path 73657269 616c313a 31313532 30306e38 serial1:115200n8
0010: 00...... ........ ........ ........ .
arm64#
Not seem to have prop netbsd,gpt-guid or netbsd,gpt-label.
Do I do correct command?
>
> thanks.
>
>
> .mrg.
>
From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
gnats-admin@netbsd.org, sc.dying@gmail.com,
bbartlomiej.mail@gmail.com
Cc:
Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 11:23:35 +1100
hmm, when i boot into qemu it picks "dk1" as the "boot device:",
not "ld0".
[ 1.0000040] ld4 at virtio31: features: 0x10000a54<INDIRECT_DESC,CONFIG_=
WCE,FLUSH,BLK_SIZE,GEOMETRY,SEG_MAX>
[ 1.0000040] ld4: 20479 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x=
41940994 sectors
[ 1.2609607] dk0 at ld4: "EFI", 163840 blocks at 32768, type: msdos
[ 1.2729387] dk1 at ld4: "netbsd-root", 41738240 blocks at 196608, type:=
ffs
[ 1.3609678] boot device: dk1
[ 1.3609678] root on dk1
is there any "root=3Dsomething" command line provided? it is the
case that here, booted_nblks is unset (0), but "booted_device" is
already set to dk1 by the time rootconf_handle_wedges() is called.
.mrg.
From: matthew green <mrg@eterna.com.au>
To: sc.dying@gmail.com
Cc: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
gnats-admin@netbsd.org, bbartlomiej.mail@gmail.com
Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 11:35:22 +1100
> 0100: 20726f6f 743d4e41 4d453d6e 65746273 root=3DNA=
ME=3Dnetbs
> 0110: 642d726f 6f742063 6f6e736f 6c653d66 d-root con=
sole=3Df
[ .. ]
>
> Not seem to have prop netbsd,gpt-guid or netbsd,gpt-label.
> Do I do correct command?
yes - the above explains some of what is happening. there's
no netbsd-gpt* because it's not loaded via efiboot, but directly
with the rpi specific boot stuff.
why this isn't working, i'm not sure about, but it seems that
something here isn't working properly, and the above should make
it boot from dk1 aka "netbsd-root" partition. if i boot in qemu
with "root=3DNAME=3Dnetbsd-root", it works for me...
if i come up with some diag printfs() to help figure this out,
can you build/run them to see?
thanks.
.mrg.
From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 00:42:47 -0000 (UTC)
mrg@eterna.com.au (matthew green) writes:
> hmm, when i boot into qemu it picks "dk1" as the "boot device:",
> not "ld0".
Too much magic, and I bet qemu boots with EFI.
> is there any "root=3Dsomething" command line provided? it is the
> case that here, booted_nblks is unset (0), but "booted_device" is
> already set to dk1 by the time rootconf_handle_wedges() is called.
The booted_nblks are for bootloaders that pass disk offsets (and sizes)
and where MI code needs to map this to a wedge device.
Here we have command line arguments that are parsed as string
options and the root option is passed in bootspec to MI code.
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, mrg@netbsd.org, gnats-admin@netbsd.org,
bbartlomiej.mail@gmail.com
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 01:32:28 +0000
On 2023/10/28 0:25, matthew green wrote:
> The following reply was made to PR port-arm/57324; it has been noted by GNATS.
>
> From: matthew green <mrg@eterna.com.au>
> To: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
> gnats-admin@netbsd.org, sc.dying@gmail.com,
> bbartlomiej.mail@gmail.com
> Cc:
> Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
> Date: Sat, 28 Oct 2023 11:23:35 +1100
>
> hmm, when i boot into qemu it picks "dk1" as the "boot device:",
> not "ld0".
>
> [ 1.0000040] ld4 at virtio31: features: 0x10000a54<INDIRECT_DESC,CONFIG_=
> WCE,FLUSH,BLK_SIZE,GEOMETRY,SEG_MAX>
> [ 1.0000040] ld4: 20479 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x=
> 41940994 sectors
> [ 1.2609607] dk0 at ld4: "EFI", 163840 blocks at 32768, type: msdos
> [ 1.2729387] dk1 at ld4: "netbsd-root", 41738240 blocks at 196608, type:=
> ffs
>
> [ 1.3609678] boot device: dk1
> [ 1.3609678] root on dk1
>
> is there any "root=3Dsomething" command line provided? it is the
> case that here, booted_nblks is unset (0), but "booted_device" is
> already set to dk1 by the time rootconf_handle_wedges() is called.
cmdline.txt reads
root=NAME=netbsd-root console=fb
It comes from src/distrib/utils/embedded/conf/{arm64,evbarm}.conf.
>
>
> .mrg.
>
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, mrg@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, bbartlomiej.mail@gmail.com
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 01:40:31 +0000
On 2023/10/28 0:40, matthew green wrote:
> The following reply was made to PR port-arm/57324; it has been noted by GNATS.
>
> From: matthew green <mrg@eterna.com.au>
> To: sc.dying@gmail.com
> Cc: gnats-bugs@netbsd.org, port-arm-maintainer@netbsd.org,
> gnats-admin@netbsd.org, bbartlomiej.mail@gmail.com
> Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
> Date: Sat, 28 Oct 2023 11:35:22 +1100
>
> > 0100: 20726f6f 743d4e41 4d453d6e 65746273 root=3DNA=
> ME=3Dnetbs
> > 0110: 642d726f 6f742063 6f6e736f 6c653d66 d-root con=
> sole=3Df
> [ .. ]
> >
> > Not seem to have prop netbsd,gpt-guid or netbsd,gpt-label.
> > Do I do correct command?
>
> yes - the above explains some of what is happening. there's
> no netbsd-gpt* because it's not loaded via efiboot, but directly
> with the rpi specific boot stuff.
>
> why this isn't working, i'm not sure about, but it seems that
> something here isn't working properly, and the above should make
> it boot from dk1 aka "netbsd-root" partition. if i boot in qemu
> with "root=3DNAME=3Dnetbsd-root", it works for me...
>
> if i come up with some diag printfs() to help figure this out,
> can you build/run them to see?
It's good idea to know where what happens.
>
> thanks.
>
>
> .mrg.
>
thanks.
From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 09:09:52 -0000 (UTC)
sc.dying@gmail.com writes:
>> if i come up with some diag printfs() to help figure this out,
>> can you build/run them to see?
>It's good idea to know where what happens.
What happens is that bcm283x uses ld0 a default booted_device
and the change prevents set_root_device from overriding it from
the command line parameter.
In fact, the change always prevents set_root_device from overriding
the booted_device which is nonsense.
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, mrg@netbsd.org, gnats-admin@netbsd.org,
bbartlomiej.mail@gmail.com
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root
wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 11:34:23 +0000
On 2023/10/28 9:15, Michael van Elst wrote:
> The following reply was made to PR port-arm/57324; it has been noted by GNATS.
>
> From: mlelstv@serpens.de (Michael van Elst)
> To: gnats-bugs@netbsd.org
> Cc:
> Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
> Date: Sat, 28 Oct 2023 09:09:52 -0000 (UTC)
>
> sc.dying@gmail.com writes:
>
> >> if i come up with some diag printfs() to help figure this out,
> >> can you build/run them to see?
>
> >It's good idea to know where what happens.
>
> What happens is that bcm283x uses ld0 a default booted_device
> and the change prevents set_root_device from overriding it from
> the command line parameter.
>
> In fact, the change always prevents set_root_device from overriding
> the booted_device which is nonsense.
exactly.
set_root_device quits early as booted_device != NULL.
[ 3.0115346] uhub0: illegal enable change, port 1
[ 3.0215336] swwdog0: software watchdog initialized
[ 3.0315397] WARNING: 3 errors while detecting hardware; check system log.
[ 3.0415360] cpu_rootconf: 1: dev ld0 part 0 bootspec <null>
[ 3.0415360] cpu_bootconf: 1: dev ld0 part 0 bootspec <null>
[ 3.0515385] set_root_device: 1: dev ld0 part 0 bootspec <null>
[ 3.0615385] cpu_bootconf: 2: dev ld0 part 0 bootspec <null>
[ 3.0615385] cpu_bootconf: 3: dev ld0 part 0 bootspec <null>
[ 3.0715401] cpu_rootconf: 2: dev ld0 part 0 bootspec <null>
[ 3.0715401] boot device: ld0
[ 3.0715401] cpu_rootconf: 3: dev ld0 part 0 bootspec <null>
[ 3.0815399] root on ld0a dumps on ld0b
[ 3.0815399] vfs_mountroot: can't open root device
[ 3.0915430] cannot mount root, error = 16
[ 3.0915430] root device (default ld0a): ?
[ 6.3219702] use one of: dk0 dk1 ld0[a-p] bwfm0 usmsc0 wedge:EFI wedge:netbsd-root ddb halt reboot
[ 6.3319714] root device (default ld0a): wedge:netbsd-root
[ 17.2834297] dump device:
[ 19.1036724] file system (default generic):
[ 19.5337299] root on dk1
[ 19.5437314] root file system type: ffs
[ 19.5437314] kern.module.path=/stand/evbarm/10.99.10/modules
[ 19.5537334] WARNING: no TOD clock present
[ 19.5537334] WARNING: using filesystem time
[ 19.5638388] WARNING: CHECK AND RESET THE DATE!
--- src/sys/arch/evbarm/evbarm/autoconf.c.orig 2023-02-06 22:45:33.074426928 +0000
+++ src/sys/arch/evbarm/evbarm/autoconf.c 2023-10-28 11:18:24.582331475 +0000
@@ -54,6 +54,15 @@ void (*evbarm_cpu_rootconf)(void);
extern struct cfdata cfdata[];
+#define PRINT_BOOTDEV(_msg) do { \
+ printf("%s: %s: dev %s part %d bootspec %s\n", \
+ __func__, _msg, booted_device \
+ ? device_xname(booted_device) \
+ : "<unknown>", \
+ booted_partition, \
+ bootspec ? bootspec : "<null>"); \
+ } while(0)
+
#ifndef MEMORY_DISK_IS_ROOT
static int get_device(char *name, device_t *, int *);
static void set_root_device(void);
@@ -108,15 +117,19 @@ set_root_device(void)
char *ptr, *end, *buf;
size_t len;
+ PRINT_BOOTDEV("1");
if (booted_device)
return;
+ PRINT_BOOTDEV("2");
if (boot_args == NULL)
return;
+ PRINT_BOOTDEV("3");
if (!get_bootconf_option(boot_args, "root", BOOTOPT_TYPE_STRING, &ptr))
return;
+ PRINT_BOOTDEV("4");
if (get_device(ptr, &booted_device, &booted_partition))
return;
@@ -126,6 +139,7 @@ set_root_device(void)
break;
}
}
+ PRINT_BOOTDEV("5");
if (end == ptr)
return;
@@ -143,6 +157,7 @@ set_root_device(void)
bootspec_buflen = len;
bootspec = bootspec_buf;
+ PRINT_BOOTDEV("6");
}
#endif
@@ -156,18 +171,24 @@ void
cpu_bootconf(void)
{
#ifndef MEMORY_DISK_IS_ROOT
+ PRINT_BOOTDEV("1");
set_root_device();
+ PRINT_BOOTDEV("2");
if (evbarm_cpu_rootconf)
(*evbarm_cpu_rootconf)();
+ PRINT_BOOTDEV("3");
#endif
}
void
cpu_rootconf(void)
{
+ PRINT_BOOTDEV("1");
cpu_bootconf();
+ PRINT_BOOTDEV("2");
aprint_normal("boot device: %s\n",
booted_device != NULL ? device_xname(booted_device) : "<unknown>");
+ PRINT_BOOTDEV("3");
rootconf();
}
From: "matthew green" <mrg@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/57324 CVS commit: src/sys/arch/evbarm/evbarm
Date: Sat, 28 Oct 2023 17:53:06 +0000
Module Name: src
Committed By: mrg
Date: Sat Oct 28 17:53:06 UTC 2023
Modified Files:
src/sys/arch/evbarm/evbarm: autoconf.c
Log Message:
allow "root=xxx" command line to override platform defaults.
PR#57324 shows that on broadcom evbarm systems the default root
is no longer chosen, even when specified on the command line.
sc.dying and mlelstv pointed out that revision 1.24 made this
function skip parsing "root=" if already set, which was not what
i expected to happen anywhere here (and it works fine on FDT and
UEFI boots.)
revert that part of 1.24.
XXX: pullup-10.
(while this is it's own bug, it points out that
bcm283x_platform_device_register() currently will set
booted_device to the first ld@sdmmc found, even if that device was
not involved with booting. while fixing this would be nice, it
wouldn't have helped with this setup -- choosing ld@sdmmc is the
right answer in eg PR#57324 at this point, so having it set in
this case should be fine, and then overrideable via root=.)
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/evbarm/evbarm/autoconf.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@netbsd.org, mlelstv@serpens.de, sc.dying@gmail.com
Cc: gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
bbartlomiej.mail@gmail.com
Subject: re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sun, 29 Oct 2023 04:53:22 +1100
> What happens is that bcm283x uses ld0 a default booted_device
> and the change prevents set_root_device from overriding it from
> the command line parameter.
>
> In fact, the change always prevents set_root_device from overriding
> the booted_device which is nonsense.
ah, i see. this code runs more like normal platform's
device_register() code, but it basically forces the booted_device
to be set to ld0@sdmmc if found, regardless of where the system
has booted from.
the reason it works elsewhere is that the rest of evbarm (at least
the pure UEFI or FDT ones) act differently here and don't see the
booted_device in the device_register() backend, so that by the
time set_root_device() is called, booted_device isn't set.
i commited the fix. thanks!
i'm gonna claim this is both a bug in the change i made to
set_root_device(), that also revealed the bug in
bcm283x_platform_device_register() where it forces booted_device
to something when it may not actually be true (afaict, this could
also be net booted, and possibly non-ld@sdmmc storage?). while it
is normal for other platforms to set booted_device via the
backend device_register(), it's normally only done _when known_,
not as a guess.
.mrg.
State-Changed-From-To: open->feedback
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Sat, 28 Oct 2023 17:58:07 +0000
State-Changed-Why:
should be fixed with autoconf rev 1.25.
From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: port-arm/57324: NetBSD 10.99.2 -current fails to detect root wedge using name on Raspberry Pi 3 official image
Date: Sat, 28 Oct 2023 19:56:37 -0000 (UTC)
mrg@eterna.com.au (matthew green) writes:
>to something when it may not actually be true (afaict, this could
>also be net booted, and possibly non-ld@sdmmc storage?).
It usually is not a guess as up to RPI3 you can only boot from ld0,
some have limited support to boot from USB (including ethernet) but
that needs to be enabled by burning an OTP diode.
From: sc.dying@gmail.com
To: gnats-bugs@netbsd.org, mrg@netbsd.org, gnats-admin@netbsd.org,
bbartlomiej.mail@gmail.com
Cc:
Subject: Re: PR/57324 CVS commit: src/sys/arch/evbarm/evbarm
Date: Sat, 28 Oct 2023 21:08:43 +0000
Thank you -- the fix will help my testbed that boots from multiple
partitions in an sdcard.
On 2023/10/28 17:55, matthew green wrote:
> The following reply was made to PR port-arm/57324; it has been noted by GNATS.
>
> From: "matthew green" <mrg@netbsd.org>
> To: gnats-bugs@gnats.NetBSD.org
> Cc:
> Subject: PR/57324 CVS commit: src/sys/arch/evbarm/evbarm
> Date: Sat, 28 Oct 2023 17:53:06 +0000
>
> Module Name: src
> Committed By: mrg
> Date: Sat Oct 28 17:53:06 UTC 2023
>
> Modified Files:
> src/sys/arch/evbarm/evbarm: autoconf.c
>
> Log Message:
> allow "root=xxx" command line to override platform defaults.
>
> PR#57324 shows that on broadcom evbarm systems the default root
> is no longer chosen, even when specified on the command line.
>
> sc.dying and mlelstv pointed out that revision 1.24 made this
> function skip parsing "root=" if already set, which was not what
> i expected to happen anywhere here (and it works fine on FDT and
> UEFI boots.)
>
> revert that part of 1.24.
>
> XXX: pullup-10.
>
> (while this is it's own bug, it points out that
> bcm283x_platform_device_register() currently will set
> booted_device to the first ld@sdmmc found, even if that device was
> not involved with booting. while fixing this would be nice, it
> wouldn't have helped with this setup -- choosing ld@sdmmc is the
> right answer in eg PR#57324 at this point, so having it set in
> this case should be fine, and then overrideable via root=.)
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.24 -r1.25 src/sys/arch/evbarm/evbarm/autoconf.c
>
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
>
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/57324 CVS commit: [netbsd-10] src/sys/arch/evbarm/evbarm
Date: Sun, 29 Oct 2023 16:51:28 +0000
Module Name: src
Committed By: martin
Date: Sun Oct 29 16:51:28 UTC 2023
Modified Files:
src/sys/arch/evbarm/evbarm [netbsd-10]: autoconf.c
Log Message:
Pull up following revision(s) (requested by mrg in ticket #437):
sys/arch/evbarm/evbarm/autoconf.c: revision 1.25
allow "root=xxx" command line to override platform defaults.
PR#57324 shows that on broadcom evbarm systems the default root
is no longer chosen, even when specified on the command line.
sc.dying and mlelstv pointed out that revision 1.24 made this
function skip parsing "root=" if already set, which was not what
i expected to happen anywhere here (and it works fine on FDT and
UEFI boots.)
revert that part of 1.24.
(while this is it's own bug, it points out that
bcm283x_platform_device_register() currently will set
booted_device to the first ld@sdmmc found, even if that device was
not involved with booting. while fixing this would be nice, it
wouldn't have helped with this setup -- choosing ld@sdmmc is the
right answer in eg PR#57324 at this point, so having it set in
this case should be fine, and then overrideable via root=.)
To generate a diff of this commit:
cvs rdiff -u -r1.23.18.1 -r1.23.18.2 src/sys/arch/evbarm/evbarm/autoconf.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(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-2023
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.