]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
lmb: add and reserve memory above ram_top
authorSughosh Ganu <sughosh.ganu@linaro.org>
Tue, 15 Oct 2024 15:37:05 +0000 (21:07 +0530)
committerTom Rini <trini@konsulko.com>
Tue, 15 Oct 2024 19:45:29 +0000 (13:45 -0600)
U-Boot does not use memory above ram_top. However, this memory does
need to get registered as part of the memory map, so that subsystems
like EFI pass it on to the operating system as part of the EFI memory
map. Add memory above ram_top and reserve it with the LMB_NOOVERWRITE
flag so that it does not get allocated or re-used.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Suggested-by: Mark Kettenis <kettenis@openbsd.org>
lib/lmb.c

index e1e616679f0338a1482e48564a75566da42e872e..0504a7b340777294bef7c73b65e2fd5f0df3ec8d 100644 (file)
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -281,7 +281,6 @@ void lmb_add_memory(void)
 {
        int i;
        phys_size_t size;
-       phys_addr_t rgn_top;
        u64 ram_top = gd->ram_top;
        struct bd_info *bd = gd->bd;
 
@@ -292,16 +291,16 @@ void lmb_add_memory(void)
        for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
                size = bd->bi_dram[i].size;
                if (size) {
-                       if (bd->bi_dram[i].start > ram_top)
-                               continue;
-
-                       rgn_top = bd->bi_dram[i].start +
-                               bd->bi_dram[i].size;
-
-                       if (rgn_top > ram_top)
-                               size -= rgn_top - ram_top;
-
                        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_flags(bd->bi_dram[i].start, size,
+                                                 LMB_NOOVERWRITE);
                }
        }
 }