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)"

Mark Millard via arm <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
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 ([email protected]: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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.