summaryrefslogtreecommitdiff
path: root/cmd/meminfo.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2024-10-21 10:19:32 +0200
committerTom Rini <trini@konsulko.com>2024-10-25 14:22:24 -0600
commit9252b7f867f7638ba3f6af85058fee7b3993222d (patch)
tree5db5b0530ab0d4daae478bc798d372e79d2e3478 /cmd/meminfo.c
parent1c30f7a844fbedfa6b08bfab9e2ad98088ce1967 (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.c26
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;
}