diff mbox series

ARM: uniphier: Move uniphier_mem_map_init() call into dram_init()

Message ID 20240405083715.2593568-1-hayashi.kunihiko@socionext.com
State Accepted
Commit 4341fb73326907faecfc9e3b711bbfcd3937b525
Delegated to: Tom Rini
Headers show
Series ARM: uniphier: Move uniphier_mem_map_init() call into dram_init() | expand

Commit Message

Kunihiko Hayashi April 5, 2024, 8:37 a.m. UTC
The function uniphier_mem_map_init() is to change global variable
'mem_map', which is referenced to get_page_table_size() to calculate
the size of page table.

However, uniphier_mem_map_init() is called after get_page_table_size(),
so the size of page table and 'mem_map' become inconsist each other.
After all, U-Boot fails to boot on chip with memory map different from
default map,

uniphier_mem_map_init() should be moved to dram_init(), which is
called before get_page_table_size().

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 arch/arm/mach-uniphier/dram_init.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

Comments

Tom Rini April 12, 2024, 6:52 p.m. UTC | #1
On Fri, Apr 05, 2024 at 05:37:15PM +0900, Kunihiko Hayashi wrote:

> The function uniphier_mem_map_init() is to change global variable
> 'mem_map', which is referenced to get_page_table_size() to calculate
> the size of page table.
> 
> However, uniphier_mem_map_init() is called after get_page_table_size(),
> so the size of page table and 'mem_map' become inconsist each other.
> After all, U-Boot fails to boot on chip with memory map different from
> default map,
> 
> uniphier_mem_map_init() should be moved to dram_init(), which is
> called before get_page_table_size().
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/arch/arm/mach-uniphier/dram_init.c b/arch/arm/mach-uniphier/dram_init.c
index 7f2753190c23..e6f1286e71fd 100644
--- a/arch/arm/mach-uniphier/dram_init.c
+++ b/arch/arm/mach-uniphier/dram_init.c
@@ -265,14 +265,15 @@  int dram_init(void)
 	if (uniphier_get_soc_id() == UNIPHIER_LD20_ID)
 		gd->ram_size -= 64;
 
+	/* map all the DRAM regions */
+	uniphier_mem_map_init(gd->ram_base, prev_top - gd->ram_base);
+
 	return 0;
 }
 
 int dram_init_banksize(void)
 {
 	struct uniphier_dram_map dram_map[3] = {};
-	unsigned long base, top;
-	bool valid_bank_found = false;
 	int ret, i;
 
 	ret = uniphier_dram_map_get(dram_map);
@@ -287,18 +288,7 @@  int dram_init_banksize(void)
 
 		if (!dram_map[i].size)
 			continue;
-
-		if (!valid_bank_found)
-			base = dram_map[i].base;
-		top = dram_map[i].base + dram_map[i].size;
-		valid_bank_found = true;
 	}
 
-	if (!valid_bank_found)
-		return -EINVAL;
-
-	/* map all the DRAM regions */
-	uniphier_mem_map_init(base, top - base);
-
 	return 0;
 }