[PATCH v9 05/11] arm: armv8: mmu: add mem_map_fix_dram_banks
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri Oct 10 13:59:38 CEST 2025
On Fri, 10 Oct 2025 at 08:53, Anshul Dalal <anshuld at ti.com> wrote:
>
> For armv8, U-Boot uses a static map defined as 'mem_map' for configuring
> the MMU as part of mmu_setup.
>
> But since the exact configuration of memory banks might not be known at
> build time, many platforms such as imx9, versal2 etc. utilize
> gd->bd->bi_dram to configure the static map at runtime.
>
> Therefore this patch adds a new API mem_map_fix_dram_banks that modifies
> the static map in a similar way. Allowing the caller to map all dram
> banks by just passing the index to last entry in their mem_map and it's
> length.
>
> Reviewed-by: Dhruva Gole <d-gole at ti.com>
> Signed-off-by: Anshul Dalal <anshuld at ti.com>
> Tested-by: Wadim Egorov <w.egorov at phytec.de>
> ---
> arch/arm/cpu/armv8/cache_v8.c | 28 ++++++++++++++++++++++++++++
> arch/arm/include/asm/armv8/mmu.h | 10 ++++++++++
> 2 files changed, 38 insertions(+)
>
> diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
> index 74c78cb2fb0..cdf17d5f396 100644
> --- a/arch/arm/cpu/armv8/cache_v8.c
> +++ b/arch/arm/cpu/armv8/cache_v8.c
> @@ -58,6 +58,34 @@ static int get_effective_el(void)
> return el;
> }
>
> +int mem_map_fix_dram_banks(unsigned int index, unsigned int len, u64 attrs)
Nit, but perhaps mem_map_from_dram_banks() is a better name?
> +{
> + unsigned int i;
> + int ret = fdtdec_setup_memory_banksize();
> +
> + if (ret) {
> + printf("%s: Failed to setup dram banks\n", __func__);
> + return ret;
We already include <log.h>, so I prefer using log_err() etc.
> + }
> +
> + if (index + CONFIG_NR_DRAM_BANKS >= len) {
> + printf("%s: Provided mem_map array has insufficient size for DRAM entries\n",
> + __func__);
> + return -ENOMEM;
> + }
> +
[...]
Thanks
/Ilias
More information about the U-Boot
mailing list