Re: Failed to execute custom kernels which where build on a RPi 4 operated by 13.1-RELEASE

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 05 Jul 2022 06:41:37 UTC
On 2022-Jul-4, at 20:14, John Kennedy <warlock@phouka.net> wrote:

> On Mon, Jul 04, 2022 at 06:39:39PM -0700, Mark Millard wrote:
>> ... I have yet to have my hands on a 0xb03115 RPi4B variant (so: Rev 1.5).
>> It is my understanding that the RPi4B firmware vintage has to be
>> recent enough to correctly handle the new PMIC used on the rev 1.5
>> variants:
>> 
>> QUOTE (of RPi engineers on its forums on 2022-Feb-08):
>> The PMIC has been changed. Needs firmware from April 21 or later
> 
>  Mark, do you know how to find that info just using FreeBSD?
> Looks like there might be some uboot stuff, but I haven't managed to
> catch it during a HDMI boot.
> 

Note: I do my own builds, installs, and configuration
experiments. Do not expect my example outputs below to
necessarily match those for official builds.

For reference from my root-on-UFS aarch64 environment that boots
via U-Boot (not via EDK2 UEFI/ACPI):

# df -m
Filesystem          1M-blocks   Used  Avail Capacity  Mounted on
/dev/gpt/CA72USBufs   1322130 224991 991368    18%    /
devfs                       0      0      0   100%    /dev
/dev/gpt/CA72USBefi       259     29    230    11%    /boot/efi

Your builds or standard-build details may vary
for what I have as /boot/efi/.

# sysctl hw.fdt # Likely a RPi* specific sysctl name?
hw.fdt.serial-number: REPLACED
hw.fdt.compatible: raspberrypi,4-model-b brcm,bcm2711
hw.fdt.model: Raspberry Pi 4 Model B Rev 1.4


I'm not aware of being able to identify the RPi4B
EEPROM content version from FreeBSD, nor the configuration
defaults that are present. But it can be important.
(More notes later.)


Presuming that one has not mixed and matched RPi* firmware
files from different RPi* firmware builds, the start*.elf
files have version identification information (that predates
the tagging date when it is declared as expected to be good):

# strings -a /boot/efi/start4.elf | grep VC_BUILD_ID_
VC_BUILD_ID_USER: dom
VC_BUILD_ID_TIME: 18:14:56
VC_BUILD_ID_VARIANT: start
VC_BUILD_ID_TIME: Aug  3 2021
VC_BUILD_ID_BRANCH: bcm2711_2
VC_BUILD_ID_HOSTNAME: buildbot
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: 40787ee5905644f639a2a0f6e00ae12e517a2211 (clean)

So it may take some comparisons to match up with
officially tagged versions or other specific versions
the FreeBSD ports may sometimes use. Similarly for
which FreeBSD port version it matches up with
(presuming it does).

I'll note that the PMIC issue is not a U-Boot issue
but just a RPi* EEPROM version and RPi* firmware issue,
as far as I know anyway.


I'm not aware of anything useful to find in
/boot/efi/armstub8-gic.bin (or armstub8.bin) for
version identification.


# strings -a /boot/efi/u-boot.bin | grep 'U-Boot 20'
U-Boot 2022.04 (Apr 23 2022 - 03:14:35 +0000)

The date here is the build date, not the version
date. So it can be useful in matching up with
FreeBSD port builds if you have used an official
FreeBSD port build's content.

This does not indicate which of the several
RPi* related u-boot ports is involved. For
aarch64 RPi*'s the modern one used by official
builds is:

sysutils/u-boot-rpi-arm64

It supports the widest range of aarch64 RPi*'s.


# strings -a /boot/efi/efi/boot/bootaa64.efi | grep 'EFI loader'
DFreeBSD/arm64 EFI loader, Revision 1.1

But, so far as I know, that one is nearly useless.


As for the RPi4B EEPROM mentioned before: I'm not aware
of a FreeBSD equivalent of either of the below for
identifying the CURRENT version:

# rpi-eeprom-update
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
   CURRENT: Tue Jan 25 14:30:41 UTC 2022 (1643121041)
    LATEST: Tue Apr 26 10:24:28 UTC 2022 (1650968668)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
            Use raspi-config to change the release.

  VL805_FW: Using bootloader EEPROM
     VL805: up to date
   CURRENT: 000138a1
    LATEST: 000138a1

# rpi-eeprom-config
[all]
BOOT_UART=1
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
BOOT_ORDER=0xf41

I boot a RaspiOS64 microsd card for the related activity.

For reference for the default (a.k.a. critical) ones:

# cd /lib/firmware/raspberrypi/
# ls -ld bootloader/default/*.bin
-rw-r--r-- 1 root root 524288 Apr 29  2020 bootloader/default/pieeprom-2020-04-16.bin
-rw-r--r-- 1 root root 524288 Sep 14  2020 bootloader/default/pieeprom-2020-09-03.bin
-rw-r--r-- 1 root root 524288 Apr 30  2021 bootloader/default/pieeprom-2021-03-18.bin
-rw-r--r-- 1 root root 524288 Apr 30  2021 bootloader/default/pieeprom-2021-04-29.bin
-rw-r--r-- 1 root root 524288 Feb  8 07:07 bootloader/default/pieeprom-2022-01-25.bin
-rw-r--r-- 1 root root 524288 May  3 05:21 bootloader/default/pieeprom-2022-04-26.bin
-rw-r--r-- 1 root root  87940 May  3 05:21 bootloader/default/recovery.bin
-rw-r--r-- 1 root root  98904 Jan 22  2020 bootloader/default/vl805-000137ad.bin
-rw-r--r-- 1 root root  99224 Sep 14  2020 bootloader/default/vl805-000138a1.bin

===
Mark Millard
marklmi at yahoo.com