diff options
| author | Simon Glass <sjg@chromium.org> | 2024-10-21 10:19:32 +0200 |
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2024-10-25 14:22:24 -0600 |
| commit | 9252b7f867f7638ba3f6af85058fee7b3993222d (patch) | |
| tree | 5db5b0530ab0d4daae478bc798d372e79d2e3478 /cmd/meminfo.c | |
| parent | 1c30f7a844fbedfa6b08bfab9e2ad98088ce1967 (diff) | |
meminfo: Show the lmb records
Add the lmb records onto the end of the memory map.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd/meminfo.c')
| -rw-r--r-- | cmd/meminfo.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/cmd/meminfo.c b/cmd/meminfo.c index 0e6d2f9cc2c..5e83d61c2dd 100644 --- a/cmd/meminfo.c +++ b/cmd/meminfo.c @@ -8,6 +8,7 @@ #include <bootstage.h> #include <command.h> #include <display_options.h> +#include <lmb.h> #include <malloc.h> #include <mapmem.h> #include <asm/global_data.h> @@ -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; } |
