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)"
- Reply: Mark Millard via arm : "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)""
- In reply to: Mark Millard via arm : "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)""
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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)