[PATCHv2] lmb/bdinfo: dump lmb info via bdinfo
Tero Kristo
t-kristo at ti.com
Mon Jul 20 10:10:45 CEST 2020
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 at ti.com>
---
v2:
* rebased to latest master
cmd/bdinfo.c | 6 ++++++
include/lmb.h | 1 +
lib/lmb.c | 42 +++++++++++++++++++++++-------------------
3 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index b7f5f710b4..d1be42469e 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 3b338dfee0..0d90ab1d65 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -48,6 +48,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 008bcc7930..d62f25f9de 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,
--
2.17.1
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
More information about the U-Boot
mailing list