From: Simon Glass Date: Mon, 21 Oct 2024 08:19:32 +0000 (+0200) Subject: meminfo: Show the lmb records X-Git-Url: http://git.dujemihanovic.xyz/login.html?a=commitdiff_plain;h=9252b7f867f7638ba3f6af85058fee7b3993222d;p=u-boot.git meminfo: Show the lmb records Add the lmb records onto the end of the memory map. Signed-off-by: Simon Glass --- diff --git a/cmd/meminfo.c b/cmd/meminfo.c index 0e6d2f9cc2..5e83d61c2d 100644 --- a/cmd/meminfo.c +++ b/cmd/meminfo.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,27 @@ static void print_region(const char *name, ulong base, ulong size, ulong *uptop) *uptop = base; } +static void show_lmb(const struct lmb *lmb, ulong *uptop) +{ + int i; + + for (i = lmb->used_mem.count - 1; i >= 0; i--) { + const struct lmb_region *rgn = alist_get(&lmb->used_mem, i, + struct lmb_region); + + /* + * Assume that the top lmb region is the U-Boot region, so just + * take account of the memory not already reported + */ + if (lmb->used_mem.count - 1) + print_region("lmb", rgn->base, *uptop - rgn->base, + uptop); + else + print_region("lmb", rgn->base, rgn->size, uptop); + *uptop = rgn->base; + } +} + static int do_meminfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -63,7 +85,9 @@ static int do_meminfo(struct cmd_tbl *cmdtp, int flag, int argc, bloblist_get_total_size(), &upto); stk_bot = gd->start_addr_sp - CONFIG_STACK_SIZE; print_region("stack", stk_bot, CONFIG_STACK_SIZE, &upto); - print_region("free", gd->ram_base, stk_bot, &upto); + if (IS_ENABLED(CONFIG_LMB)) + show_lmb(lmb_get(), &upto); + print_region("free", gd->ram_base, upto, &upto); return 0; } diff --git a/test/cmd/meminfo.c b/test/cmd/meminfo.c index 84981305bf..53b41e3b49 100644 --- a/test/cmd/meminfo.c +++ b/test/cmd/meminfo.c @@ -30,7 +30,11 @@ static int cmd_test_meminfo(struct unit_test_state *uts) ut_assert_nextlinen("bootstage"); ut_assert_nextlinen("bloblist"); ut_assert_nextlinen("stack"); - ut_assert_nextlinen("free"); + + /* we expect at least one lmb line, but don't know how many */ + ut_assert_nextlinen("lmb"); + ut_assert_skip_to_linen("free"); + ut_assert_console_end(); return 0;