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: Mon, 31 May 2021 05:27:31 UTC
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):

diff --git a/sysutils/u-boot-master/files/FreeBSD_Fragment b/sysutils/u-boot-master/files/FreeBSD_Fragment
index 630d295cc8f1..f3837a932e98 100644
--- a/sysutils/u-boot-master/files/FreeBSD_Fragment
+++ b/sysutils/u-boot-master/files/FreeBSD_Fragment
@@ -1,3 +1,2 @@
-CONFIG_API=y
 CONFIG_ARMV7_NONSEC=n
-CONFIG_CMD_CACHE=y
+CONFIG_EFI_GRUB_ARM32_WORKAROUND=y

diff --git a/sysutils/u-boot-master/files/patch-api_api.c b/sysutils/u-boot-master/files/patch-api_api.c
deleted file mode 100644
index 5de1e5e653d9..000000000000
--- a/sysutils/u-boot-master/files/patch-api_api.c
+++ /dev/null
@@ -1,14 +0,0 @@
---- api/api.c.orig	2018-07-09 14:24:14 UTC
-+++ api/api.c
-@@ -289,6 +289,11 @@ static int API_dev_close(va_list ap)
- 	if (!err)
- 		di->state = DEV_STA_CLOSED;
- 
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
-+
- 	return err;
- }
- 

diff --git a/sysutils/u-boot-master/files/FreeBSD_Fragment b/sysutils/u-boot-master/files/FreeBSD_Fragment
index 630d295cc8f1..f3837a932e98 100644
--- a/sysutils/u-boot-master/files/FreeBSD_Fragment
+++ b/sysutils/u-boot-master/files/FreeBSD_Fragment
@@ -1,3 +1,2 @@
-CONFIG_API=y
 CONFIG_ARMV7_NONSEC=n
-CONFIG_CMD_CACHE=y
+CONFIG_EFI_GRUB_ARM32_WORKAROUND=y

diff --git a/sysutils/u-boot-master/files/boot.cmd b/sysutils/u-boot-master/files/boot.cmd
deleted file mode 100644
index b3ce82975eb3..000000000000
--- a/sysutils/u-boot-master/files/boot.cmd
+++ /dev/null
@@ -1,2 +0,0 @@
-fatload ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ubldr.bin && go ${kernel_addr_r}
-echo "Cannot load ubldr.bin"

diff --git a/sysutils/u-boot-master/files/patch-api_api.c b/sysutils/u-boot-master/files/patch-api_api.c
deleted file mode 100644
index 5de1e5e653d9..000000000000
--- a/sysutils/u-boot-master/files/patch-api_api.c
+++ /dev/null
@@ -1,14 +0,0 @@
---- api/api.c.orig	2018-07-09 14:24:14 UTC
-+++ api/api.c
-@@ -289,6 +289,11 @@ static int API_dev_close(va_list ap)
- 	if (!err)
- 		di->state = DEV_STA_CLOSED;
- 
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
-+
- 	return err;
- }
- 

diff --git a/sysutils/u-boot-master/files/patch-api_api__storage.c b/sysutils/u-boot-master/files/patch-api_api__storage.c
deleted file mode 100644
index 2e5846fb9a5c..000000000000
--- a/sysutils/u-boot-master/files/patch-api_api__storage.c
+++ /dev/null
@@ -1,25 +0,0 @@
---- api/api_storage.c.orig	2019-07-08 19:23:28 UTC
-+++ api/api_storage.c
-@@ -69,13 +69,6 @@ void dev_stor_init(void)
- 	specs[ENUM_SATA].type = DEV_TYP_STOR | DT_STOR_SATA;
- 	specs[ENUM_SATA].name = "sata";
- #endif
--#if defined(CONFIG_SCSI)
--	specs[ENUM_SCSI].max_dev = CONFIG_SYS_SCSI_MAX_DEVICE;
--	specs[ENUM_SCSI].enum_started = 0;
--	specs[ENUM_SCSI].enum_ended = 0;
--	specs[ENUM_SCSI].type = DEV_TYP_STOR | DT_STOR_SCSI;
--	specs[ENUM_SCSI].name = "scsi";
--#endif
- #if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE)
- 	specs[ENUM_USB].max_dev = USB_MAX_STOR_DEV;
- 	specs[ENUM_USB].enum_started = 0;
-@@ -281,7 +274,7 @@ int dev_enum_storage(struct device_info *di)
- {
- 	int i;
- 
--	/* check: ide, usb, scsi, mmc */
-+	/* check: ide, usb, mmc */
- 	for (i = ENUM_IDE; i < ENUM_MAX; i ++) {
- 		if (dev_enum_stor(i, di))
- 			return 1;

diff --git a/sysutils/u-boot-master/files/patch-cmd_boot.c b/sysutils/u-boot-master/files/patch-cmd_boot.c
deleted file mode 100644
index b0c520aeb2ed..000000000000
--- a/sysutils/u-boot-master/files/patch-cmd_boot.c
+++ /dev/null
@@ -1,13 +0,0 @@
---- cmd/boot.c.orig	2018-07-09 14:24:14 UTC
-+++ cmd/boot.c
-@@ -18,6 +18,10 @@ __attribute__((weak))
- unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
- 				 char * const argv[])
- {
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
- 	return entry (argc, argv);
- }
- 

diff --git a/sysutils/u-boot-master/files/patch-cmd_elf.c b/sysutils/u-boot-master/files/patch-cmd_elf.c
deleted file mode 100644
index a6cac78a0989..000000000000
--- a/sysutils/u-boot-master/files/patch-cmd_elf.c
+++ /dev/null
@@ -1,14 +0,0 @@
---- cmd/elf.c.orig	2018-07-09 14:24:14 UTC
-+++ cmd/elf.c
-@@ -153,6 +153,11 @@ static unsigned long do_bootelf_exec(ulong (*entry)(in
- {
- 	unsigned long ret;
- 
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
-+
- 	/*
- 	 * pass address parameter as argv[0] (aka command name),
- 	 * and all remaining args


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