On 5/29/26 6:30 PM, Peter Robinson wrote:
On Fri, 29 May 2026 at 16:44, Tom Rini <[email protected]> wrote:

On Fri, May 29, 2026 at 01:10:14PM +0100, Peter Robinson wrote:
Hi Tom, Marek et el,

This is still broken on Raspberry Pis, at least RPi4/RPi5 against RC3.

On Fri Mar 13, 2026 at 8:54 PM GMT, Tom Rini wrote:
On Wed, 28 Jan 2026 00:48:40 +0100, Marek Vasut wrote:

Revert commit eb052cbb896f ("lmb: add and reserve memory above ram_top")
and commit 1a48b0be93d4 ("lmb: prohibit allocations above ram_top even from
same bank"). These are based on incorrect premise of the first commit, that
"U-Boot does not use memory above ram_top". While U-Boot itself indeed does
not and should not use memory above ram_top, user can perfectly well use
that memory from the U-Boot shell, for example to load content in there.

[...]

Applied to u-boot/next, thanks!

[1/1] lmb: Reinstate access to memory above ram_top
       commit: a3075db94d49f415658bf7e961e1eae90d9abc33

(Cc RPI maintainers)

Hi Tom,

I'm testing out latest u-boot/next on my Raspberry Pi 5 8GB, and I am running
into issues caused by this patch.

I have EFI enabled, and efi_allocate_pages will call into lmb to allocate pages
and start accessing them. However on RPI5, only 1G is mapped, so I got hit with
an "Synchronous Abort" triggered at address 0x1_ffff_f000.

I was seeing a "Synchronous Abort" triggered, but now now I am seeing:

Hit any key to stop autoboot: 0
Cannot persist EFI variables without system partition
** Booting bootflow '<NULL>' with efi_mgr
Not a PE-COFF file
Loading Boot0000 'mmc 0' failed
EFI boot manager: Cannot load any image
Boot failed (err=-14)
** Booting bootflow '[email protected]_1' with efi
Booting /\EFI\BOOT\BOOTAA64.EFI
Platform does not support this image
Failed to read header: Unsupported
Failed to load image: Unsupported
start_image() returned Unsupported
## Application failed, r = 3
Boot failed (err=-22)

Now, that is easy to fix with the following diff:

Simon sent something similar [1] but it didn't fix the problem, nor
address the RPi4.

[1] 
https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/

diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c
index 7a1de22e0aef..1db2e37c44f4 100644
--- a/arch/arm/mach-bcm283x/init.c
+++ b/arch/arm/mach-bcm283x/init.c
@@ -69,10 +69,10 @@ static struct mm_region 
bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = {

  static struct mm_region bcm2712_mem_map[MEM_MAP_MAX_ENTRIES] = {
         {
-               /* First 1GB of DRAM */
-               .virt = 0x00000000UL,
-               .phys = 0x00000000UL,
-               .size = 0x40000000UL,
+               /* 16GB of DRAM max */
+               .virt = 0x000000000UL,
+               .phys = 0x000000000UL,
+               .size = 0x400000000UL,
                 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
                          PTE_BLOCK_INNER_SHARE
         }, {

and that indeed makes my system go past the init. However, I found that while it
is fine to boot into systemd-boot, systemd-boot cannot boot into kernel. After
some investigation, it turns out that efi_load_image_from_file uses
efi_allocate_pages to allocate pages, and then feed this to f->read. This all
eventually trickles down to the MMC driver, and MMC is doing a 32-bit DMA and it
fails to write to the buffer allocated (which is above 4G).

The Raspberry Pi has a number of devices which are only accessible at
lower memory access, the mailbox is only accessible < 1Gb too.

This could be all fixed by having dma_map_single use a bounce buffer and copy
back the contents on unmap similar to kernel's swiotlb, but that's going to be
some major work.

In the mean time, I think this patch should be reverted. I can confirm that my
system boots fine with this reverted.

Yes, I agree here.

Can you please post the revert Peter? Thanks.

Sent.

The revert is wrong as that breaks other things , like use of DRAM above 4 GiB boundary, which is exactly why this change was implemented. If RPi has limitations, then those limitations should be imposed on RPi, not globally, so add the LMB reservations on RPi.

Reply via email to