summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarek Vasut <[email protected]>2026-01-28 00:48:40 +0100
committerTom Rini <[email protected]>2026-03-13 13:20:11 -0600
commita3075db94d49f415658bf7e961e1eae90d9abc33 (patch)
treec7fdf2ab32f9888160f80eaf8d20294bce5ba4e5 /lib
parentdba21bf0b6ececa4bbc15ac93b3cdf4b09286ed7 (diff)
lmb: Reinstate access to memory above ram_top
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. Currently, attempt to use that memory to load large image using TFTP ends with "TFTP error: trying to overwrite reserved memory...". With this change in place, the memory can be used again. Fixes: eb052cbb896f ("lmb: add and reserve memory above ram_top") Fixes: 1a48b0be93d4 ("lmb: prohibit allocations above ram_top even from same bank") Reported-by: Yuya Hamamachi <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
Diffstat (limited to 'lib')
-rw-r--r--lib/lmb.c17
1 files changed, 1 insertions, 16 deletions
diff --git a/lib/lmb.c b/lib/lmb.c
index e2d9fe86c14..8f12c6ad8e5 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -611,7 +611,6 @@ static __maybe_unused void lmb_reserve_common_spl(void)
static void lmb_add_memory(void)
{
int i;
- phys_addr_t bank_end;
phys_size_t size;
u64 ram_top = gd->ram_top;
struct bd_info *bd = gd->bd;
@@ -625,23 +624,9 @@ static void lmb_add_memory(void)
for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
size = bd->bi_dram[i].size;
- bank_end = bd->bi_dram[i].start + size;
- if (size) {
+ if (size)
lmb_add(bd->bi_dram[i].start, size);
-
- /*
- * Reserve memory above ram_top as
- * no-overwrite so that it cannot be
- * allocated
- */
- if (bd->bi_dram[i].start >= ram_top)
- lmb_reserve(bd->bi_dram[i].start, size,
- LMB_NOOVERWRITE);
- else if (bank_end > ram_top)
- lmb_reserve(ram_top, bank_end - ram_top,
- LMB_NOOVERWRITE);
- }
}
}