summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2020-07-20 11:10:45 +0300
committerTom Rini <trini@konsulko.com>2020-08-04 23:30:02 -0400
commit9996cea75f5a77db5a6055342130d27a36830ef8 (patch)
treec6383ae1612af79f00904cfba809323495740f23
parentcc6b87ecaa96325577a8fafabc0d5972b816bc6c (diff)
lmb/bdinfo: dump lmb info via bdinfo
Dump lmb status from the bdinfo command. This is useful for seeing the reserved memory regions from the u-boot cmdline. Signed-off-by: Tero Kristo <t-kristo@ti.com>
-rw-r--r--cmd/bdinfo.c7
-rw-r--r--include/lmb.h1
-rw-r--r--lib/lmb.c42
3 files changed, 31 insertions, 19 deletions
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index 8b2c105e77..2a6dd6c67a 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <command.h>
#include <env.h>
+#include <lmb.h>
#include <net.h>
#include <vsprintf.h>
#include <asm/cache.h>
@@ -96,6 +97,12 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
#if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
bdinfo_print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit);
#endif
+ if (gd->fdt_blob) {
+ struct lmb lmb;
+
+ lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob);
+ lmb_dump_all_force(&lmb);
+ }
arch_print_bdinfo();
diff --git a/include/lmb.h b/include/lmb.h
index 73b7a5cbe3..e9f19b16ea 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -49,6 +49,7 @@ extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
extern void lmb_dump_all(struct lmb *lmb);
+extern void lmb_dump_all_force(struct lmb *lmb);
static inline phys_size_t
lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
diff --git a/lib/lmb.c b/lib/lmb.c
index 2d680d8d02..75082f3559 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -14,33 +14,37 @@
#define LMB_ALLOC_ANYWHERE 0
-void lmb_dump_all(struct lmb *lmb)
+void lmb_dump_all_force(struct lmb *lmb)
{
-#ifdef DEBUG
unsigned long i;
- debug("lmb_dump_all:\n");
- debug(" memory.cnt = 0x%lx\n", lmb->memory.cnt);
- debug(" memory.size = 0x%llx\n",
- (unsigned long long)lmb->memory.size);
+ printf("lmb_dump_all:\n");
+ printf(" memory.cnt = 0x%lx\n", lmb->memory.cnt);
+ printf(" memory.size = 0x%llx\n",
+ (unsigned long long)lmb->memory.size);
for (i = 0; i < lmb->memory.cnt; i++) {
- debug(" memory.reg[0x%lx].base = 0x%llx\n", i,
- (unsigned long long)lmb->memory.region[i].base);
- debug(" .size = 0x%llx\n",
- (unsigned long long)lmb->memory.region[i].size);
+ printf(" memory.reg[0x%lx].base = 0x%llx\n", i,
+ (unsigned long long)lmb->memory.region[i].base);
+ printf(" .size = 0x%llx\n",
+ (unsigned long long)lmb->memory.region[i].size);
}
- debug("\n reserved.cnt = 0x%lx\n",
- lmb->reserved.cnt);
- debug(" reserved.size = 0x%llx\n",
- (unsigned long long)lmb->reserved.size);
+ printf("\n reserved.cnt = 0x%lx\n", lmb->reserved.cnt);
+ printf(" reserved.size = 0x%llx\n",
+ (unsigned long long)lmb->reserved.size);
for (i = 0; i < lmb->reserved.cnt; i++) {
- debug(" reserved.reg[0x%lx].base = 0x%llx\n", i,
- (unsigned long long)lmb->reserved.region[i].base);
- debug(" .size = 0x%llx\n",
- (unsigned long long)lmb->reserved.region[i].size);
+ printf(" reserved.reg[0x%lx].base = 0x%llx\n", i,
+ (unsigned long long)lmb->reserved.region[i].base);
+ printf(" .size = 0x%llx\n",
+ (unsigned long long)lmb->reserved.region[i].size);
}
-#endif /* DEBUG */
+}
+
+void lmb_dump_all(struct lmb *lmb)
+{
+#ifdef DEBUG
+ lmb_dump_all_force(lmb);
+#endif
}
static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,