arm: mvebu: a37xx: Fix calling build_mem_map()

Function build_mem_map() modifies global variable mem_map. This variable is
used by the get_page_table_size() function which is called by function
arm_reserve_mmu() (as aliased macro PGTABLE_SIZE). Function
arm_reserve_mmu() is called earlier than enable_caches() which calls
build_mem_map(). So arm_reserve_mmu() does not calculate reserved memory
correctly.

Fix this issue by calling build_mem_map() from a3700_dram_init() which is
called before arm_reserve_mmu().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
This commit is contained in:
Pali Rohár 2022-02-16 11:18:43 +01:00 committed by Stefan Roese
parent 0eebc3dbe5
commit 2fb7426cf0

View file

@ -142,8 +142,6 @@ static void build_mem_map(void)
void enable_caches(void)
{
build_mem_map();
icache_enable();
dcache_enable();
}
@ -152,6 +150,8 @@ int a3700_dram_init(void)
{
int win;
build_mem_map();
gd->ram_size = 0;
for (win = 0; win < MVEBU_CPU_DEC_WINS; ++win) {
u32 base, tgt, size;