[REGRESSION] Out of memory error: unable to boot on imx8mp/imx8mm

João Paulo Gonçalves jpaulo.silvagoncalves at gmail.com
Tue Dec 17 12:18:50 CET 2024


> 
> Okay. Please try changing the value of ram_top to 0x1_0000_0000
> instead of 0xFFFF_FFFF. That should work.
>

Changing ram_top to 0x1_0000_0000 worked:

U-Boot SPL 2025.01-rc4-00025-g100a40dd79f8 (Dec 17 2024 - 08:05:06 -0300)
DDR configured as dual rank
WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
SEC0:  RNG instantiated
Normal Boot
Trying to boot from BOOTROM
Boot Stage: Primary boot
Find img info 0x4802d400, size 1116
Need continue download 1024
NOTICE:  BL31: v2.6(release):lf_v2.6-g3c1583ba0a
NOTICE:  BL31: Built : 11:00:38, Nov 21 2022


U-Boot 2025.01-rc4-00025-g100a40dd79f8 (Dec 17 2024 - 08:05:06 -0300)

CPU:   Freescale i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 54C
Reset cause: POR
DRAM:  Ram top: 100000000
8 GiB
Core:  183 devices, 31 uclasses, devicetree: separate
WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
MMC:   FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... Reading from MMC(2)... OK
In:    serial at 30880000
Out:   serial at 30880000
Err:   serial at 30880000
Model: Toradex 0070 Verdin iMX8M Plus Quad 8GB WB IT V1.1A
Serial#: 15207893
Carrier: Toradex Dahlia V1.1C, Serial# 11060859
SEC0:  RNG instantiated
Setting variant to wifi
Net:   eth1: ethernet at 30be0000, eth0: ethernet at 30bf0000 [PRIME]
Hit any key to stop autoboot:  0 
MMC: no card present
switch to partitions #0, OK
mmc2(part 0) is current device
Scanning mmc 2:1...
Found U-Boot script /boot.scr
5974 bytes read in 1 ms (5.7 MiB/s)
## Executing script at 50280000
Loading DeviceTree: imx8mp-verdin-wifi-dev.dtb
...
Starting kernel ...

The change is shown in the patch below, but I am unsure if this is the
correct solution. Should ram_top be the last valid address or the upper
bound?

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index 9588b8b28bf2..e01774ebc8a4 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -362,7 +362,7 @@ phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
         * space below the 4G address boundary (which is 3GiB big),
         * even when the effective available memory is bigger.
         */
-       top_addr = clamp_val((u64)PHYS_SDRAM + gd->ram_size, 0, 0xffffffff);
+       top_addr = clamp_val((u64)PHYS_SDRAM + gd->ram_size, 0, 0x100000000);
 
        /*
         * rom_pointer[0] stores the TEE memory start address.

Best Regards,
João Paulo Gonçalves


More information about the U-Boot mailing list