[PATCH 2/3] k3-am62-pocketbeagle2: add initial board support
Randolph Sapp
rs at ti.com
Fri Mar 27 00:23:20 CET 2026
On Wed Mar 25, 2026 at 7:34 PM CDT, Randolph Sapp wrote:
> On Mon Mar 23, 2026 at 2:46 PM CDT, Robert Nelson wrote:
>> On Mon, Mar 23, 2026 at 2:37 PM Randolph Sapp <rs at ti.com> wrote:
>>> On Fri Mar 20, 2026 at 10:32 AM CDT, Robert Nelson wrote:
>>> >> > +++ b/configs/am62_pocketbeagle2_a53_defconfig
>>> >> > @@ -6,11 +6,11 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
>>> >> > CONFIG_SPL_LIBGENERIC_SUPPORT=y
>>> >> > CONFIG_NR_DRAM_BANKS=1
>>> >> > CONFIG_SOC_K3_AM625=y
> [snip]
>>> >> > @@ -120,7 +115,8 @@ CONFIG_SYSRESET_TI_SCI=y
>>> >> > CONFIG_EXT4_WRITE=y
>>> >> > CONFIG_FS_FAT_MAX_CLUSTSIZE=16384
>>> >> > CONFIG_LZO=y
>>> >> > -CONFIG_EFI_SET_TIME=y
>>> >> > +CONFIG_SYS_MEM_TOP_HIDE=0x4000000
>>> >>
>>> >> Any reason why we are using TOP_HIDE here instead of just moving OPTEE
>>> >> lower in DDR like we do on the 512MiB AM6254atl EVM?
>>> >
>>> > Sorry, that is now a legacy setting before OPTEE finally got moved in
>>> > v2026.01, as this had been developed thru v2025 u-boot releases..
>>> >
>>>
>>> Well, it's worth noting that this change was not done in the usual way, and
>>> involves user interaction during the build beyond selecting a defconfig.
>>>
>>> https://texasinstruments.github.io/processor-sdk-doc/processor-sdk-linux-AM62X/esd/docs/master/linux/Foundational_Components_ATF.html
>>> https://git.ti.com/cgit/arago-project/meta-ti/tree/meta-ti-bsp/conf/machine/am62xxsip-evm.conf
>>>
>>> Robert, are you alright with me making the requested changes?
>>
>> I guess as long as we document it. I know the Octavo OSD62-sip @Erik
>> Welsh will also be building on both am62xxsip and pocketbeagle2 based
>> on the 512MB and then larger memory sizes (1G, 2G, etc.).
>>
>> Regards,
>
> Oh boy, adjusting the memory maps kept getting me out of memory errors in the
> EFI flow that I knew should not be true. Found something fun: LMB reserved
> memory regions do not match EFI reserved memory regions. EFI's
> efi_carve_out_dt_rsv is setting regions to be more strict that LMB's base
> requirements. When this occurs and an allocation runs into this discrepancy,
> that allocation and all future allocation requests in the EFI flow will begin to
> fail as they are repeatedly given the same LMB start address in the unapproved
> region.
>
> Randolph
Alright, looking into the allocation helpers it seems that
EFI_CONVENTIONAL_MEMORY can be remapped in efi_allocate_pages so long as LMB
agrees that it's free. This aligns with my understanding of the UEFI spec as
well. I dumped the EFI memory map and noticed there were 2 fragmented sections
of EFI_CONVENTIONAL_MEMORY that it could still use.
Wired up efi_allocate_pages to go to those regions and attempt to allocate from
there in the even an LMB_MEM_ALLOC_MAX or LMB_MEM_ALLOC_ANY start failing. Seems
to have worked, but now I'm seeing the following reported in the kernel:
[ 0.048167] [Firmware Bug]: Unable to handle paging request in EFI runtime service
[ 0.048246] ------------[ cut here ]------------
[ 0.048249] WARNING: CPU: 0 PID: 1 at /usr/src/kernel/drivers/firmware/efi/runtime-wrappers.c:341 __efi_queue_work+0xd4/0x108
[ 0.048270] Modules linked in:
[ 0.048285] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G I 6.18.13-ti-00636-g30182cf3ac7d-dirty #1 PREEMPT
[ 0.048296] Tainted: [I]=FIRMWARE_WORKAROUND
[ 0.048299] Hardware name: beagle BeagleBoard.org PocketBeagle2/BeagleBoard.org PocketBeagle2, BIOS 2026.04-rc5-00003-gf1dace477fb8-dirty 04/01/2026
[ 0.048305] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 0.048312] pc : __efi_queue_work+0xd4/0x108
[ 0.048318] lr : __efi_queue_work+0xc0/0x108
[ 0.048323] sp : ffff80008003bc80
[ 0.048326] x29: ffff80008003bc80 x28: ffffad05b176bad4 x27: ffffad05b16b00ac
[ 0.048336] x26: ffffad05b1622e60 x25: ffffad05b1953000 x24: ffffad05b1749050
[ 0.048345] x23: 0000000000000004 x22: ffff80008003bd1e x21: ffff80008003bd20
[ 0.048353] x20: ffff80008003bd28 x19: ffffad05b19cd5d8 x18: fffffffffffe2f20
[ 0.048362] x17: 0000000000007000 x16: ffff000001c065a0 x15: 0000000000000000
[ 0.048370] x14: 000000000000008a x13: ffff000001cf8090 x12: 0000000000000001
[ 0.048379] x11: 00000000000000c0 x10: 00000000000009f0 x9 : ffff80008003bad0
[ 0.048387] x8 : ffff000001cf8a50 x7 : 0000000000000001 x6 : 0000000000000001
[ 0.048395] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000001
[ 0.048403] x2 : 0000000000000000 x1 : 8000000000000015 x0 : 8000000000000015
[ 0.048413] Call trace:
[ 0.048417] __efi_queue_work+0xd4/0x108 (P)
[ 0.048426] virt_efi_get_next_variable+0x5c/0xac
[ 0.048434] efisubsys_init+0x148/0x390
[ 0.048444] do_one_initcall+0x60/0x1d4
[ 0.048457] kernel_init_freeable+0x248/0x2c4
[ 0.048468] kernel_init+0x20/0x140
[ 0.048478] ret_from_fork+0x10/0x20
[ 0.048489] ---[ end trace 0000000000000000 ]---
U-boot itself doesn't report any errors, so I want to assume this is probably a
configuration issue regarding something else I've forgotten to add.
Anyone got any quick/obvious comments before I start digging through more of
that? Was my assumption about EFI_CONVENTIONAL_MEMORY incorrect? Is this, as
unlikely as I think it is, actually just a known issue right now?
More information about the U-Boot
mailing list