arm64: Make full va map code more dynamic
authorAlexander Graf <agraf@suse.de>
Fri, 4 Mar 2016 00:09:47 +0000 (01:09 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 15 Mar 2016 19:13:01 +0000 (15:13 -0400)
commit5e2ec773bb6c5acf22d8652112856e87cff86ea4
treeae75a1cab47d1d59c91ccc5a5d2579c64dab47a1
parent9bb367a590feac21d674e4d2cee77702d4774819
arm64: Make full va map code more dynamic

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.

Signed-off-by: Alexander Graf <agraf@suse.de>
arch/arm/cpu/armv8/cache.S
arch/arm/cpu/armv8/cache_v8.c
arch/arm/include/asm/armv8/mmu.h
arch/arm/include/asm/global_data.h
arch/arm/include/asm/system.h
include/configs/thunderx_88xx.h