diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2014-10-20 15:42:07 +0200 |
---|---|---|
committer | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2015-01-12 08:16:52 +0000 |
commit | 8ce837cee8f51fb0eacb32c85461ea2f0fafc9f8 (patch) | |
tree | 14bb68cb91e5890156381969a1f1f9ca87cd2047 /arch/arm64/include | |
parent | e1e1fddae74b72d0415965821ad00fe39aac6f13 (diff) | |
download | linux-8ce837cee8f51fb0eacb32c85461ea2f0fafc9f8.tar.gz linux-8ce837cee8f51fb0eacb32c85461ea2f0fafc9f8.tar.bz2 linux-8ce837cee8f51fb0eacb32c85461ea2f0fafc9f8.zip |
arm64/mm: add create_pgd_mapping() to create private page tables
For UEFI, we need to install the memory mappings used for Runtime Services
in a dedicated set of page tables. Add create_pgd_mapping(), which allows
us to allocate and install those page table entries early.
Reviewed-by: Will Deacon <will.deacon@arm.com>
Tested-by: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Diffstat (limited to 'arch/arm64/include')
-rw-r--r-- | arch/arm64/include/asm/mmu.h | 3 | ||||
-rw-r--r-- | arch/arm64/include/asm/pgtable.h | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h index c2f006c48bdb..5fd40c43be80 100644 --- a/arch/arm64/include/asm/mmu.h +++ b/arch/arm64/include/asm/mmu.h @@ -33,5 +33,8 @@ extern void __iomem *early_io_map(phys_addr_t phys, unsigned long virt); extern void init_mem_pgprot(void); /* create an identity mapping for memory (or io if map_io is true) */ extern void create_id_mapping(phys_addr_t addr, phys_addr_t size, int map_io); +extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys, + unsigned long virt, phys_addr_t size, + pgprot_t prot); #endif diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 210d632aa5ad..59079248529d 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -264,6 +264,11 @@ static inline pmd_t pte_pmd(pte_t pte) return __pmd(pte_val(pte)); } +static inline pgprot_t mk_sect_prot(pgprot_t prot) +{ + return __pgprot(pgprot_val(prot) & ~PTE_TABLE_BIT); +} + /* * THP definitions. */ |