[PATCH v9 07/11] arm: armv8: mmu: add mmu_unmap_reserved_mem
    Anshul Dalal 
    anshuld at ti.com
       
    Fri Oct 10 14:42:31 CEST 2025
    
    
  
On Fri Oct 10, 2025 at 5:38 PM IST, Ilias Apalodimas wrote:
> Hi Anshul,
>
> On Fri, 10 Oct 2025 at 08:54, Anshul Dalal <anshuld at ti.com> wrote:
>>
>> For armv8, U-Boot uses a static map defined as 'mem_map' for configuring
>> the MMU's page tables, done by mmu_setup.
>>
>> Though this works well for simpler platforms, it makes creating runtime
>> carveouts by modifying the static array at runtime exceedingly complex
>> like in mach-snapdragon/board.c.
>>
>> Creation of such carveouts is much better handled by APIs such as
>> mmu_change_region_attr once the page tables are configured. Usually such
>> carveouts are configured via the device-tree's reserved-memory node
>> which provides the address and size for the carveout.
>>
>> Therefore this patch adds mmu_unmap_reserved_mem which acts as a wrapper
>> over mmu_change_region_attr, helping unmap a reserved-memory region.
>>
>> 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    | 23 +++++++++++++++++++++++
>>  arch/arm/include/asm/armv8/mmu.h |  9 +++++++++
>>  2 files changed, 32 insertions(+)
>>
>> diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
>> index cdf17d5f396..74814601483 100644
>> --- a/arch/arm/cpu/armv8/cache_v8.c
>> +++ b/arch/arm/cpu/armv8/cache_v8.c
>> @@ -86,6 +86,29 @@ int mem_map_fix_dram_banks(unsigned int index, unsigned int len, u64 attrs)
>>
>>         return 0;
>>  }
>> +
>> +int mmu_unmap_reserved_mem(const char *name)
>> +{
>> +       void *fdt = (void *)gd->fdt_blob;
>> +       char node_path[128];
>> +       fdt_addr_t addr;
>> +       fdt_size_t size;
>> +       int ret;
>> +
>> +       snprintf(node_path, sizeof(node_path), "/reserved-memory/%s", name);
>> +       ret = fdt_path_offset(fdt, node_path);
>> +       if (ret < 0)
>> +               return ret;
>
> The DT spec defines a /reserved/ no-map; option for reserved memory
> that should not participate in the memory map.
> Is there any reason why we unconditionally unmap reserved memory and
> not the no-map one only?
>
I was expecting the caller to only try to unmap regions that already had
no-map but we can add a check here too.
Regards,
Anshul
    
    
More information about the U-Boot
mailing list