Re: openbsd 7.8 is out and (just?) D0 vintage RPi5 support is official [the U-boot installed does not handle usb booting, but D0 RPi5 EDK2 draft's DeviceTree mode worked for that]

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 23 Oct 2025 20:43:11 UTC
On Oct 22, 2025, at 10:49, Mark Millard <marklmi@yahoo.com> wrote:

> On Oct 22, 2025, at 10:23, Mark Millard <marklmi@yahoo.com> wrote:
> 
>> On Oct 22, 2025, at 07:43, Mark Millard <marklmi@yahoo.com> wrote:
>> 
>>> On Oct 22, 2025, at 07:16, void <void@f-m.fm> wrote:
>>> 
>>>> On Tue, Oct 21, 2025 at 10:34:48PM -0700, Mark Millard wrote:
>>>>> On Oct 21, 2025, at 22:16, Mark Millard <marklmi@yahoo.com> wrote:
>>>> 
>>>>>> The rpone driver supports the Raspberry Pi RP1 peripheral controller that is used in the
>>>>>> Raspberry Pi 5. The driver acts as a bridge between the PCIe bus and the peripherals
>>>>>> and maps peripheral interrupts onto MSI-X interrupts. The peripherals themselves are
>>>>>> supported by separate drivers.
>>>> 
>>>> Do you know if this implies support for the ethernet interface?
>>> 
>>> Quoting from https://www.openbsd.org/78.html :
>>> 
>>>  • Added support for Raspberry Pi 5 (with console on serial port).
>>> . . .
>>>  • Make the cad(4) Ethernet interface on the Raspberry Pi 5 work by configuring the delays for RGMII PHYs correctly.
>>> 
>>> Also, quoting https://man.openbsd.org/bcmstbpinctrl.4 :
>>> 
>>> "The bcmstbpinctrl driver uses pin control data from the device tree to select one of multiple possible roles available for pins on Broadcom Set-top Box SoCs. This includes the Broadcom BCM2712 SoC that is used in the Raspberry Pi 5. It does not provide direct device driver entry points but makes its functions available to other drivers."
>>> 
>>> So: Device Tree, not ACPI, for that.
>>> 
>>> There are no special instructions about using UEFI/ACPI . I expect it is
>>> U-Boot based by default and works with their miniroot78.img without
>>> substitutions for such.
>> 
>> On a D0 (modern) vintage RPi5, I installed OpenBSD 7.8 .
>> 
>> After that . . . booting and using the built-in Ethernet
>> and the EDK2 draft for the D0 vintage RPi5's (used in
>> DeviceTree mode), using a USB3 media for openbsd and the
>> EDK2 draft on a microsd card:
>> 
>> # uname -ap
>> OpenBSD RPi64bOpenBSD.my.domain 7.8 GENERIC.MP#38 arm64 aarch64
>> 
>> # df
>> Filesystem  512-blocks      Used     Avail Capacity  Mounted on
>> /dev/sd1a      2018844    244740   1673164    13%    /
>> /dev/sd1l    243602060         4 231421956     1%    /home
>> /dev/sd1d      8114908        12   7709152     1%    /tmp
>> /dev/sd1f     46092380   2446128  41341636     6%    /usr
>> /dev/sd1g      2018844         4   1917900     1%    /usr/X11R6
>> /dev/sd1h     40614428       288  38583420     1%    /usr/local
>> /dev/sd1k     12179004         4  11570052     1%    /usr/obj
>> /dev/sd1j     10146972         4   9639620     1%    /usr/src
>> /dev/sd1e     56214104     11336  53392064     1%    /var
>> 
>> Note: I did not install games or X11 materials.
>> 
>> # ping 192.168.1.1
>> PING 192.168.1.1 (192.168.1.1): 56 data bytes
>> 64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.707 ms
>> 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.705 ms
>> 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.650 ms
>> 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.722 ms
>> 64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.725 ms
>> 64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.694 ms
>> ^C
>> --- 192.168.1.1 ping statistics ---
>> 6 packets transmitted, 6 packets received, 0.0% packet loss
>> round-trip min/avg/max/std-dev = 0.650/0.701/0.725/0.025 ms
>> 
>> ssh login over Ethernet is working.
>> 
>> # ifconfig | grep "^[^i    ]"
>> lo0: flags=2008049<UP,LOOPBACK,RUNNING,MULTICAST,LRO> mtu 32768
>> cad0: flags=a48843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6,AUTOCONF4> mtu 1500
>> enc0: flags=0<>
>> bwfm0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
>> pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
>> 
>> # dmesg -s
>> Automatic boot in progress: starting file system checks.
>> /dev/sd1a (455e297ed8d3ccce.a): file system is clean; not checking
>> /dev/sd1l (455e297ed8d3ccce.l): file system is clean; not checking
>> /dev/sd1d (455e297ed8d3ccce.d): file system is clean; not checking
>> /dev/sd1f (455e297ed8d3ccce.f): file system is clean; not checking
>> /dev/sd1g (455e297ed8d3ccce.g): file system is clean; not checking
>> /dev/sd1h (455e297ed8d3ccce.h): file system is clean; not checking
>> /dev/sd1k (455e297ed8d3ccce.k): file system is clean; not checking
>> /dev/sd1j (455e297ed8d3ccce.j): file system is clean; not checking
>> /dev/sd1e (455e297ed8d3ccce.e): file system is clean; not checking
>> pf enabled
>> starting network
>> reordering: ld.so libc libcrypto sshd sshd-session sshd-auth ssh-agent.
>> openssl: generating isakmpd RSA keys... done.
>> openssl: generating iked ECDSA keys... done.
>> ssh-keygen: generating new host keys: RSA ECDSA ED25519 
>> sshd: (ED25519) SHA256:aiv3N0kkdUYkVqXiaB18+445D1BjhqiF45DYVc4ZbGI
>> starting early daemons: syslogd pflogd ntpd.
>> starting RPC daemons:.
>> savecore: no core dump
>> checking quotas: done.
>> clearing /tmp
>> kern.securelevel: 0 -> 1
>> creating runtime link editor directory cache.
>> preserving editor files.
>> starting network daemons: sshd smtpd sndiod.
>> running rc.firsttime
>> fw_update: add bwfm; update none
>> Checking for available binary patches...
>> starting local daemons: cron.
>> Wed Oct 22 09:03:58 PDT 2025
>> 
>> 
>> Note: Booting did not work for the EDK2's ACPI mode.
>> 
>> 
>> I expect that the USB3 media's msdosfs content to be
>> adjusted to be based on the EDK2 draft.
>> 
>> 
>> But I prefer to be able to move the USB3 media between
>> the D0 RPi5 and the pre-D0 RPI5 without switching
>> EDK2 involved on the USB3 media: separate microsd cards
>> for separate RPI5's that need distinct EDK2 drafts as
>> stands. That is, if that was working as I'd hoped.
>> 
>> When I moved the USB3 media to the old, original vintage
>> RPi5, OpenBSD choose its "sd0" instead of its "sd1".
>> "sd0" is the microsd card with the EDK2 on it and the
>> USB3 media is "sd1".
>> 
>> But I seem to remember that openbsd kernel security
>> actually does not support moving boot media between
>> systems and then simply using it --and that more than
>> that might be involved. (I've not used OpenBSD much
>> --and it has been a long time since I last did.) FYI,
>> the /etc/fstab that the install set up:
>> 
>> # cat /etc/fstab
>> 455e297ed8d3ccce.b none swap sw
>> 455e297ed8d3ccce.a / ffs rw 1 1
>> 455e297ed8d3ccce.l /home ffs rw,nodev,nosuid 1 2
>> 455e297ed8d3ccce.d /tmp ffs rw,nodev,nosuid 1 2
>> 455e297ed8d3ccce.f /usr ffs rw,nodev 1 2
>> 455e297ed8d3ccce.g /usr/X11R6 ffs rw,nodev 1 2
>> 455e297ed8d3ccce.h /usr/local ffs rw,wxallowed,nodev 1 2
>> 455e297ed8d3ccce.k /usr/obj ffs rw,nodev,nosuid 1 2
>> 455e297ed8d3ccce.j /usr/src ffs rw,nodev,nosuid 1 2
>> 455e297ed8d3ccce.e /var ffs rw,nodev,nosuid 1 2
>> 
>> 
>> Side note:
>> Too bad FreeBSD requires ACPI and OpenBSD requires
>> DeviceTree for the EDK2 drafts.
>> 
>> 
>> For reference, from var/log/messages :
>> 
>> . . .
>> 
> 
> For reference, the "D0" RPi5B config.txt that I use
> with the EDK2 drafts is as shown by:
> 
> # cat /mnt/config.txt
> armstub=RPI_EFI.fd
> #
> # For NEW EDK2 (debug):
> device_tree_address=0x3e0000
> device_tree_end=0x400000
> #
> # For OLDER EDK2 (non-debug):
> #device_tree_address=0x1f0000
> #device_tree_end=0x210000
> 
> # Force 32 bpp framebuffer allocation.
> framebuffer_depth=32
> 
> # Disable compensation for displays with overscan.
> disable_overscan=1
> 
> # Force maximum USB power regardless of the power supply.
> usb_max_current_enable=1
> 
> # Force maximum CPU speed.
> force_turbo=1
> 
> # Local additions:
> enable_uart=1
> uart_2ndstage=1
> dtdebug=1
> disable_commandline_tags=1
> #
> [pi5]
> over_voltage_delta=100000
> arm_freq=2600
> [all]
> program_usb_boot_timeout=1
> 


Bad news for the older, pre-D0 RPi5's relative
to OpenBSD 7.8 . . .

Context: older, original vintage RPi5 (8 GiBytes),
pre-D0 silicon with the older, EDK2 draft what
is for such older silicon

So far my experiments with the combination of
OpenBSD 7.8 and the older EDK2 draft for the older
RPi5 does not support USB. The bsd.rd (in memory)
kernel used for installs and upgrades and such
only shows the microsd card (as sd0) as present.
As the microsd card is the EDK2 one, it does not
have openbsd on it. Net result: "Available disks
are: none." despite the USB media that works for
the D0 RPI5 being plugged in to a USB port.

The last release (v0.3) for pre-D0 EDK2 draft
was back on 2024-Mar-15 and the *.dtb file(s)
from the RPi* folks likely was from somewhat
earlier. It might just be too old to be
compatible with what OpenBSD has done.


===
Mark Millard
marklmi at yahoo.com