rockchip: sdram: Limit usable ram_top to max 4G
authorJonas Karlman <jonas@kwiboo.se>
Thu, 30 Jan 2025 22:07:12 +0000 (22:07 +0000)
committerKever Yang <kever.yang@rock-chips.com>
Wed, 19 Feb 2025 15:11:06 +0000 (23:11 +0800)
U-Boot only works correctly when it uses RAM below the 4G address
boundary on Rockchip SoCs. Limit usable gd->ram_top to max 4G.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/mach-rockchip/sdram.c

index 96a791b..4b8b6b9 100644 (file)
@@ -487,7 +487,8 @@ int dram_init(void)
 
 phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
 {
-       unsigned long top = CFG_SYS_SDRAM_BASE + SDRAM_MAX_SIZE;
+       /* Make sure U-Boot only uses the space below the 4G address boundary */
+       u64 top = min_t(u64, CFG_SYS_SDRAM_BASE + SDRAM_MAX_SIZE, SZ_4G);
 
        return (gd->ram_top > top) ? top : gd->ram_top;
 }