[U-Boot] [PATCH 2/9] arm64: Make full va map code more dynamic

Stephen Warren swarren at wwwdotorg.org
Tue Feb 23 18:21:24 CET 2016


On 02/23/2016 06:17 AM, Simon Glass wrote:
> Hi Alex,
>
> On 21 February 2016 at 18:57, Alexander Graf <agraf at suse.de> wrote:
>> The idea to generate our pages tables from an array of memory ranges
>> is very sound. However, instead of hard coding the code to create up
>> to 2 levels of 64k granule page tables, we really should just create
>> normal 4k page tables that allow us to set caching attributes on 2M
>> or 4k level later on.
>>
>> So this patch moves the full_va mapping code to 4k page size and
>> makes it fully flexible to dynamically create as many levels as
>> necessary for a map (including dynamic 1G/2M pages). It also adds
>> support to dynamically split a large map into smaller ones when
>> some code wants to set dcache attributes.
>>
>> With all this in place, there is very little reason to create your
>> own page tables in board specific files.

>>   static struct mm_region mem_map[] = CONFIG_SYS_MEM_MAP;
>
> I am not ken on the idea of using a big #define table on these boards.
> Is there not a device-tree binding for this that we can use? It is
> just a data table, We are moving to Kconfig and eventually want to
> drop the config files.

I would strongly object to making the MMU setup depend on device tree 
parsing. This is low-level system code that should be handled purely by 
simple standalone C code.

Having some CPU-/SoC-/board-specific code define the table, rather than 
having it be a #define, seems fine though, if the code in the current 
patch needs to change.


More information about the U-Boot mailing list