[PATCH v2 09/14] lmb: allow for boards to specify memory map

Sughosh Ganu sughosh.ganu at linaro.org
Tue Oct 8 20:14:30 CEST 2024


Some architectures have special or unique aspects which need
consideration when adding memory ranges to the list of available
memory map. Enable this config in such scenarios which allow
architectures and boards to define their own memory map.

Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
---
Changes since V1: None

 include/lmb.h |  2 ++
 lib/Kconfig   | 18 ++++++++++++++++++
 lib/lmb.c     |  3 +++
 3 files changed, 23 insertions(+)

diff --git a/include/lmb.h b/include/lmb.h
index 92e9aead764..a63c75eda8c 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -166,6 +166,8 @@ long lmb_free(phys_addr_t base, phys_size_t size);
 void lmb_dump_all(void);
 void lmb_dump_all_force(void);
 
+void lmb_arch_add_memory(void);
+
 struct lmb *lmb_get(void);
 int lmb_push(struct lmb *store);
 void lmb_pop(struct lmb *store);
diff --git a/lib/Kconfig b/lib/Kconfig
index 61452f7ac94..100c4e5c250 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -1132,6 +1132,24 @@ config SPL_LMB
 	  SPL. This will require a malloc() implementation for defining
 	  the data structures needed for maintaining the LMB memory map.
 
+config LMB_ARCH_MEM_MAP
+	bool "Add an architecture specific memory map"
+	depends on LMB
+	help
+	  Some architectures have special or unique aspects which need
+	  consideration when adding memory ranges to the list of available
+	  memory map. Enable this config in such scenarios which allow
+	  architectures and boards to define their own memory map.
+
+config SPL_LMB_ARCH_MEM_MAP
+	bool "Add an architecture specific memory map"
+	depends on SPL_LMB
+	help
+	  Some architectures have special or unique scenarios which need
+	  consideration when adding memory ranges to the list of available
+	  memory map. Enable this config in such scenarios which allow
+	  architectures and boards to define their own memory map.
+
 config PHANDLE_CHECK_SEQ
 	bool "Enable phandle check while getting sequence number"
 	help
diff --git a/lib/lmb.c b/lib/lmb.c
index a41e8c4ce03..82dfd36364b 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -331,6 +331,9 @@ void lmb_add_memory(void)
 	u64 ram_top = gd->ram_top;
 	struct bd_info *bd = gd->bd;
 
+	if (CONFIG_IS_ENABLED(LMB_ARCH_MEM_MAP))
+		return lmb_arch_add_memory();
+
 	/* Assume a 4GB ram_top if not defined */
 	if (!ram_top)
 		ram_top = 0x100000000ULL;
-- 
2.34.1



More information about the U-Boot mailing list