It's not very obvious that there devices that can attach on RPi4 only if the UEFI firmware to set to FDT mode.
Also, the UEFI firmware for RPi4 defaults to capping physical memory to 3 GB since the DMA controller can't access memory above 3 GB and Linux doesn't have a workaronud for that. Going by the DMA constraint set up in efiboot.c and arm64/machdep.c, it looks to me like it's safe to disable this cap with OpenBSD. I think it makes sense to mention that in the Raspberry Pi 4 paragraphs in INSTALL.arm64. Diffs below. I posted the arm64.html diff before but it was at the end of another thread so it may not have been noticed... blob - 03a8b09c4376e045df573927e43b49db78a533dd blob + a4b0d39c0a6faa5186719991e9b07245fa578055 --- distrib/notes/arm64/prep +++ distrib/notes/arm64/prep @@ -73,6 +73,18 @@ Install on Raspberry Pi 4: should see a multi-coloured screen followed by UEFI firmware output. If you do not see this, re-check your UEFI firmware installation. + As of this writing, the UEFI firmware's default settings supply the + booted OS with ACPI tables only. The ACPI tables do not include some + onboard devices such as the bwfm(4) wireless interface. In order to + use these devices under OpenBSD, configure the UEFI firmware to + provide both ACPI tables and a firmware device tree (FDT). + + Additionally, the UEFI firmware limits the OS' physical memory to + 3 GB by default because of DMA controller hardware limitations that + cause problems with other operating systems. OpenBSD has a workaround + for the DMA limitation, so it is safe to disable the 3 GB limit when + running OpenBSD. + OpenBSD should boot automatically soon after loading the UEFI firmware. If a monitor is connected you will see messages from the boot loader, but after the kernel has started running you will only see output on blob - 4aae202b2b0e09c1df1e55f2a8cb8b84847c0825 blob + a583aa46fe231ad14f7ecd5e28043f55a39d805d --- arm64.html +++ arm64.html @@ -60,9 +60,20 @@ U-Boot> boot <p> The Raspberry Pi 4 is only supported when using EDK2-based UEFI firmware. -By default the boot ROM will only try to load the firmware off an SD card. -There is no SD/MMC driver yet, but there are no manual steps needed to -boot from a USB disk drive. +By default the boot ROM will only try to load the firmware off an SD card, +but there are no manual steps needed to boot the operating system from a +USB disk drive. The UEFI firmware's ACPI tables provide enough devices +for the system to be usable with USB storage and wired Ethernet; additional +devices such as the +<a href="https://man.openbsd.org/arm64/bcmdog.4">bcmdog(4)</a> +watchdog timer and +<a href="https://man.openbsd.org/arm64/bcmirng.4">bcmirng(4)</a> +RNG can be attached when the firmware is configured to provide a +device tree in addition to ACPI. The SD controller may need to be +set to eMMC2 mode in the firmware in order for it to attach along +with the onboard +<a href="https://man.openbsd.org/arm64/bwfm.4">bwfm(4)</a> +WiFi. <p> Ampere eMAG and AMD Opteron systems come with a UEFI firmware in ROM @@ -150,7 +161,7 @@ An updated device tree may have to be supplied to make <h4>802.11 wireless</h4> <ul> <li><a href="https://man.openbsd.org/arm64/bwfm.4">bwfm(4)</a> - on Raspberry Pi 3 and Pinebook Pro + on Raspberry Pi 3/4 and Pinebook Pro </ul> <h4>Storage</h4> @@ -162,7 +173,7 @@ An updated device tree may have to be supplied to make <li><a href="https://man.openbsd.org/arm64/dwmmc.4">dwmmc(4)</a> on Rockchip RK3328/RK3399 <li><a href="https://man.openbsd.org/arm64/sdhc.4">sdhc(4)</a> - on Rockchip RK3399 + on Rockchip RK3399 and Raspberry Pi 4 <li><a href="https://man.openbsd.org/arm64/sximmc.4">sximmc(4)</a> on Allwinner A64/H5 </ul>