Re: /usr/local/share/u-boot/u-boot-orangepi-plus-2e/README out of date ; orangepi-plus-2e and RPi2 v1.1 get "Kernel args: (null)"

From: Mark Millard via arm <arm_at_freebsd.org>
Date: Wed, 02 Jun 2021 10:40:03 UTC

On 2021-Jun-2, at 02:01, Emmanuel Vadot <manu at bidouilliste.com> wrote:

> On Sun, 30 May 2021 22:32:38 -0700
> Mark Millard via arm <arm@freebsd.org> wrote:
> 
>> On 2021-May-30, at 22:27, Mark Millard <marklmi at yahoo.com> wrote:
>> 
>>> On 2021-May-24, at 20:10, Mark Millard <marklmi at yahoo.com> wrote:
>>> 
>>>> On 2021-May-24, at 15:53, Mark Millard <marklmi at yahoo.com> wrote:
>>>> 
>>>>> On 2021-May-13, at 12:03, Mark Millard <marklmi at yahoo.com> wrote:
>>>>> 
>>>>>>>>> . . .
>>>>> 
>>>>> I do not know if the FreeBSD kernel has been depending
>>>>> on some U-Boot initialization for root-on-USB and the
>>>>> two no longer match or what.
>>>>> 
>>>>> But I've used a release/13.0.0.0 microsd card based
>>>>> boot to get older U-Boot materials (Quarterly as it
>>>>> turns out). Installing such got me back to having a
>>>>> root-on-USB boot of the OPi+2e (other than the
>>>>> mircosd card having the older U-Boot (2020.10 as it
>>>>> turns out). Of course there is also the matching
>>>>> boot.scr involved --but it also is on the USB SSD.
>>>>> (Similarly reverted RPi2 U-Boot, other than needing
>>>>> to switch boot.scr to match.)
>>>>> 
>>>>> After booting with the reverted U-Boot related
>>>>> material:
>>>>> 
>>>>> # mount -onoatime -tmsdosfs /dev/mmcsd1s1 /mnt
>>>>> # mount -onoatime /dev/mmcsd1s2a /media
>>>>> 
>>>>> # ls -Tla /mnt/
>>>>> total 20
>>>>> drwxr-xr-x   1 root  wheel  16384 Dec 31 16:00:00 1979 .
>>>>> drwxr-xr-x  25 root  wheel    512 Dec 31 16:00:40 2009 ..
>>>>> 
>>>>> # ls -Tla /media/
>>>>> total 60
>>>>> drwxr-xr-x   2 root  wheel    512 May 24 15:43:19 2021 .
>>>>> drwxr-xr-x  25 root  wheel    512 Dec 31 16:00:40 2009 ..
>>>>> -rwxr-xr-x   1 root  wheel  52456 Apr 24 19:48:36 2021 bootcode.bin
>>>>> 
>>>>> The media is also set up for booting an RPi2 via
>>>>> root-in-USB ( other than bootcode.bin ).
>>>>> 
>>>>> If FreeBSD and the more modern U-Boot were well matched
>>>>> for USB support, I'd expect that this sort of thing would
>>>>> work (no boot.scr needed).
>>>>> 
>>>>> For reference:
>>>>> 
>>>>> # ~/fbsd-based-on-what-freebsd-main.sh 
>>>>> FreeBSD OPiP2E_RPi2v11 14.0-CURRENT FreeBSD 14.0-CURRENT mm-src-n245445-def0058cc690 GENERIC-NODBG  arm armv7 1400005 1400005
>>>>> def0058cc690 (HEAD -> mm-src) mm-src snapshot for mm's patched build in git context.
>>>>> merge-base: 7381bbee29df959e88ec59866cf2878263e7f3b2
>>>>> merge-base: CommitDate: 2021-03-12 20:29:42 +0000
>>>>> 7381bbee29df (freebsd/main, freebsd/HEAD, pure-src, main) cam: Run all XPT_ASYNC ccbs in a dedicated thread
>>>>> n245444 (--first-parent --count for merge-base)
>>>> 
>>>> Looks like 2021.04 (even before 2021.04_1) also has the
>>>> problem for root-on-USB handling.
>>>> 
>>>> I managed to find a 2021-Apr-09 u-boot-orangepi-plus-2e
>>>> directory copy that was 2021.04 (and its boot.scr) but
>>>> before the UEFI change. When I tried it for the
>>>> root-on-USB context I still got the hangup after "Kernel
>>>> args: (null)" in:
>>>> 
>>>> . . .
>>>> Hit [Enter] to boot immediately, or any other key for command prompt.
>>>> Booting [/boot/kernel/kernel]...               
>>>> Using DTB provided by EFI at 0x47eea000.
>>>> Kernel entry at 0xb2e00200...
>>>> Kernel args: (null)
>>>> 
>>>> 
>>>> So it does not appear to be the UEFI change so much as
>>>> 2021.04 in general for which the FreeBSD kernel and
>>>> the U-Boot are apparently(?) mismatched for root-on-USB.
>>>> 
>>>> 
>>>> Reverting again to 2020.10 U-Boot got back the root-on-USB
>>>> status. For this the boot looks like:
>>>> 
>>>> . . .
>>>> Hit [Enter] to boot immediately, or any other key for command prompt.
>>>> Booting [/boot/kernel/kernel]...               
>>>> Using DTB provided by EFI at 0x47ef5000.
>>>> Kernel entry at 0xb2e00200...
>>>> Kernel args: (null)
>>>> ---<<BOOT>>---
>>>> KDB: debugger backends: ddb
>>>> KDB: current backend: ddb
>>>> Copyright (c) 1992-2021 The FreeBSD Project.
>>>> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
>>>>      The Regents of the University of California. All rights reserved.
>>>> FreeBSD is a registered trademark of The FreeBSD Foundation.
>>>> FreeBSD 14.0-CURRENT mm-src-n245445-def0058cc690 GENERIC-NODBG arm
>>>> FreeBSD clang version 11.0.1 (git@github.com:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe)
>>>> . . .
>>>> 
>>> 
>>> Well, I got a surprise in exploring: removing boot.scr
>>> and ubldr.bin did not prevent booting. (Noticed by the
>>> accident of ending up with one of them missing that I
>>> only later noticed.) So I recorded a boot and:
>>> 
>>> . . .
>>> U-Boot SPL 2020.10 (Apr 19 2021 - 18:04:31 +0000)
>>> DRAM: 2048 MiB
>>> Trying to boot from MMC1
>>> 
>>> 
>>> U-Boot 2020.10 (Apr 19 2021 - 18:04:31 +0000) Allwinner Technology
>>> 
>>> CPU:   Allwinner H3 (SUN8I 1680)
>>> Model: Xunlong Orange Pi Plus 2E
>>> DRAM:  2 GiB
>>> . . .
>>> Device 0: Vendor: OWC      Rev: 0    Prod: Envoy Pro mini  
>>>           Type: Hard Disk
>>>           Capacity: 228936.5 MB = 223.5 GB (468862128 x 512)
>>> ... is now current device
>>> Scanning usb 0:4...
>>> 30675 bytes read in 3 ms (9.8 MiB/s)
>>> Found EFI removable media binary efi/boot/bootarm.efi
>>> . . .
>>> Booting /efi\boot\bootarm.efi
>>> Consoles: EFI console  
>>> 
>>> 
>>> |/-\|/-\|/-\|/-\|/-\|/-\|/-\    Reading loader env vars from /efi/freebsd/loader.env
>>> 
>>> 
>>> Setting currdev to disk2p4:
>>> 
>>> 
>>> |/-\|/FreeBSD/arm EFI loader, Revision 1.1
>>> . . .
>>> 
>>> So I've likely been been booting via UEFI for
>>> some time via 2020.10 (or even before?), just
>>> without noticing at the time.
>>> 
>>> The other implication is likely that what disabled
>>> root-on-USB for my context was not the boot.scr
>>> removal material but some (possibly proper) subset
>>> of other material changed (extracted from
>>> ports' main 0d6e5081eb00 commit cgit display):
>> 
>> Nope: I forgot that I've tried 2021.04 from before
>> the UEFI changes referenced, and also had the
>> problem for that context.
> 
> 2021.04 cannot work on armv7, caches weren't cleared.
> 
>> Still it is interesting that I'm getting a UEFI
>> boot context from 2020.10 .
> 
> The only thing I can suggest is git bisect on u-boot repo and see if
> you have any result.
> 

Just FYI:

As a cross check, I tried the U-Boot 2021.04 from fedora 34's

uboot-images-armv7-2021.04-3.fc34.noarch.rpm

and its (as installed):

/usr/share/uboot/orangepi_plus2e/u-boot-sunxi-with-spl.bin

The overall boot also hangs, with slightly different messaging:

. . .
Booting [/boot/kernel/kernel]...               
Using DTB provided by EFI at 0x47f00000.
Kernel entry at 0xb2e00200...
Kernel args: (null)
EHCI failed to shut down host controller.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)