Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 May 2021 22:27:31 -0700
From:      Mark Millard via arm <arm@freebsd.org>
To:        Emmanuel Vadot <manu@bidouilliste.com>
Cc:        "freebsd-arm@freebsd.org" <arm@freebsd.org>
Subject:   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)"
Message-ID:  <5F226A9B-852D-4E72-9896-0509E56D3318@yahoo.com>
In-Reply-To: <0482F239-B137-42F5-8802-8883D08D5868@yahoo.com>
References:  <40298C05-5F50-4437-B15B-7A02EA070EAE.ref@yahoo.com> <40298C05-5F50-4437-B15B-7A02EA070EAE@yahoo.com> <20210513111517.86336633bae9568d8599f229@bidouilliste.com> <B1C79772-0C68-479B-9A27-6F8CF5037724@yahoo.com> <20210513124050.47714a83f876d67a80e28080@bidouilliste.com> <CF0EE6DE-6E9D-4011-892F-6F546325AEC9@yahoo.com> <F28E5A50-5AFD-4D02-B8D1-62AD3E26EFDC@yahoo.com> <3C04FB55-4A26-48C8-833F-E4AC84DC4F78@yahoo.com> <99906599-273E-4216-A41E-DE642F33E392@yahoo.com> <0482F239-B137-42F5-8802-8883D08D5868@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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:
>=20
>> On 2021-May-13, at 12:03, Mark Millard <marklmi at yahoo.com> wrote:
>>=20
>>>>>> . . .
>>=20
>> 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.
>>=20
>> 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.)
>>=20
>> After booting with the reverted U-Boot related
>> material:
>>=20
>> # mount -onoatime -tmsdosfs /dev/mmcsd1s1 /mnt
>> # mount -onoatime /dev/mmcsd1s2a /media
>>=20
>> # 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 ..
>>=20
>> # 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
>>=20
>> The media is also set up for booting an RPi2 via
>> root-in-USB ( other than bootcode.bin ).
>>=20
>> 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).
>>=20
>> For reference:
>>=20
>> # ~/fbsd-based-on-what-freebsd-main.sh=20
>> 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)
>=20
> Looks like 2021.04 (even before 2021.04_1) also has the
> problem for root-on-USB handling.
>=20
> 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:
>=20
> . . .
> Hit [Enter] to boot immediately, or any other key for command prompt.
> Booting [/boot/kernel/kernel]...              =20
> Using DTB provided by EFI at 0x47eea000.
> Kernel entry at 0xb2e00200...
> Kernel args: (null)
>=20
>=20
> 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.
>=20
>=20
> Reverting again to 2020.10 U-Boot got back the root-on-USB
> status. For this the boot looks like:
>=20
> . . .
> Hit [Enter] to boot immediately, or any other key for command prompt.
> Booting [/boot/kernel/kernel]...              =20
> 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)
> . . .
>=20

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 =20
            Type: Hard Disk
            Capacity: 228936.5 MB =3D 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 =20


|=08/=08-=08\=08|=08/=08-=08\=08|=08/=08-=08\=08|=08/=08-=08\=08|=08/=08-=08=
\=08|=08/=08-=08\=08|=08/=08-=08\=08    Reading loader env vars from =
/efi/freebsd/loader.env


Setting currdev to disk2p4:


|=08/=08-=08\=08|=08/=08FreeBSD/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=3Dy
 CONFIG_ARMV7_NONSEC=3Dn
-CONFIG_CMD_CACHE=3Dy
+CONFIG_EFI_GRUB_ARM32_WORKAROUND=3Dy

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 =3D DEV_STA_CLOSED;
-=20
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
-+
- 	return err;
- }
-=20

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=3Dy
 CONFIG_ARMV7_NONSEC=3Dn
-CONFIG_CMD_CACHE=3Dy
+CONFIG_EFI_GRUB_ARM32_WORKAROUND=3Dy

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 =3D DEV_STA_CLOSED;
-=20
-+	if (dcache_status())
-+		flush_dcache_all();
-+	if (icache_status())
-+		invalidate_icache_all();
-+
- 	return err;
- }
-=20

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 =3D DEV_TYP_STOR | DT_STOR_SATA;
- 	specs[ENUM_SATA].name =3D "sata";
- #endif
--#if defined(CONFIG_SCSI)
--	specs[ENUM_SCSI].max_dev =3D CONFIG_SYS_SCSI_MAX_DEVICE;
--	specs[ENUM_SCSI].enum_started =3D 0;
--	specs[ENUM_SCSI].enum_ended =3D 0;
--	specs[ENUM_SCSI].type =3D DEV_TYP_STOR | DT_STOR_SCSI;
--	specs[ENUM_SCSI].name =3D "scsi";
--#endif
- #if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE)
- 	specs[ENUM_USB].max_dev =3D USB_MAX_STOR_DEV;
- 	specs[ENUM_USB].enum_started =3D 0;
-@@ -281,7 +274,7 @@ int dev_enum_storage(struct device_info *di)
- {
- 	int i;
-=20
--	/* check: ide, usb, scsi, mmc */
-+	/* check: ide, usb, mmc */
- 	for (i =3D 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);
- }
-=20

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;
-=20
-+	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


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5F226A9B-852D-4E72-9896-0509E56D3318>