On Sunday, September 30, 2018 8:25 PM, Andrey Melentyev 
<andrey.melent...@protonmail.com> wrote:

> OpenBSD -current doesn't boot on Raspberry Pi 3 Model B+.
> Tried snapshots from 2018-09-25, 2018-09-26 and 2018-09-30.
>
> libfdt fdt_check_header(): FDT_ERR_BADMAGIC
> FDT memrsv map 0: Failed to add to map

I did some digging and it looks like the breakage is due to u-boot
changing their expectations for the address of the DT. According to
https://github.com/u-boot/u-boot/commit/385cbe298a6ddcab2d6cc21fb6a549152572957b#diff-4423363118839006e390baeab521e520
the new address is 0x02600000, so to make it work, config.txt needs to
contain:

arm_64bit=1
enable_uart=1
device_tree_address=0x02600000
kernel=u-boot.bin

there may also be other ways which I haven't tried, for example u-boot
seems to check broadcom/ directory for .dtb files, see 
https://github.com/u-boot/u-boot/commit/5d3c4ba19f0537313aa23f29894bc05952f08206
but expects to have different file names, where instead of bcm2710-
prefix for RPI-3, bcm2835- is used. And the third option can be to
include a u-boot script which does some custom loading.

Unless I got it completely wrong, the following small config.txt
change needs to be applied to -current in order to unbreak booting
on RPI3.

diff --git a/distrib/arm64/miniroot/Makefile b/distrib/arm64/miniroot/Makefile
index cee5434e5be..a418daca7df 100644
--- a/distrib/arm64/miniroot/Makefile
+++ b/distrib/arm64/miniroot/Makefile
@@ -65,7 +65,7 @@ do_files:
        mkdir -p ${MOUNT_POINT}/efi/boot
        cp /usr/mdec/BOOTAA64.EFI ${MOUNT_POINT}/efi/boot/bootaa64.efi
        echo bootaa64.efi > ${MOUNT_POINT}/efi/boot/startup.nsh
-       echo 
'arm_control=0x200\nenable_uart=1\ndevice_tree_address=0x100\nkernel=u-boot.bin'
 > ${MOUNT_POINT}/config.txt
+       echo 
'arm_64bit=1\nenable_uart=1\ndevice_tree_address=0x02600000\nkernel=u-boot.bin' 
> ${MOUNT_POINT}/config.txt
        dd if=${PUBOOT}/pine64_plus/u-boot-sunxi-with-spl.bin \
            of=${VND_CDEV} bs=1024 seek=8

Reply via email to