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>