linux/arch/arm64/mm
Ard Biesheuvel a7f8de168a arm64: allow kernel Image to be loaded anywhere in physical memory
This relaxes the kernel Image placement requirements, so that it
may be placed at any 2 MB aligned offset in physical memory.

This is accomplished by ignoring PHYS_OFFSET when installing
memblocks, and accounting for the apparent virtual offset of
the kernel Image. As a result, virtual address references
below PAGE_OFFSET are correctly mapped onto physical references
into the kernel Image regardless of where it sits in memory.

Special care needs to be taken for dealing with memory limits passed
via mem=, since the generic implementation clips memory top down, which
may clip the kernel image itself if it is loaded high up in memory. To
deal with this case, we simply add back the memory covering the kernel
image, which may result in more memory to be retained than was passed
as a mem= parameter.

Since mem= should not be considered a production feature, a panic notifier
handler is installed that dumps the memory limit at panic time if one was
set.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2016-02-18 18:16:53 +00:00
..
cache.S arm64: Use PoU cache instr for I/D coherency 2015-12-17 11:07:13 +00:00
context.c arm64: cpufeature: Change read_cpuid() to use sysreg's mrs_s macro 2016-02-18 11:59:54 +00:00
copypage.c arm64: Defer dcache flush in __cpu_copy_user_page 2015-12-17 11:07:13 +00:00
dma-mapping.c arm64: add __init/__initdata section marker to some functions/variables 2015-12-02 12:17:11 +00:00
dump.c arm64: move kernel image to base of vmalloc area 2016-02-18 18:16:44 +00:00
extable.c arm64: MMU fault handling and page table management 2012-09-17 13:41:57 +01:00
fault.c arm64: Remove the get_thread_info() function 2016-02-18 17:27:05 +00:00
flush.c arm64, thp: remove infrastructure for handling splitting PMDs 2016-01-15 17:56:32 -08:00
hugetlbpage.c arm64: hugetlb: add support for PTE contiguous bit 2015-12-21 17:26:00 +00:00
init.c arm64: allow kernel Image to be loaded anywhere in physical memory 2016-02-18 18:16:53 +00:00
ioremap.c arm64: add ioremap physical address information 2015-01-23 15:29:06 +00:00
kasan_init.c arm64: move kernel image to base of vmalloc area 2016-02-18 18:16:44 +00:00
Makefile arm64: add KASAN support 2015-10-12 17:46:36 +01:00
mm.h arm64: add better page protections to arm64 2015-01-22 14:54:29 +00:00
mmap.c arm64: mm: support ARCH_MMAP_RND_BITS 2016-01-14 16:00:49 -08:00
mmu.c arm64: allow kernel Image to be loaded anywhere in physical memory 2016-02-18 18:16:53 +00:00
pageattr.c arm64: Add support for ARCH_SUPPORTS_DEBUG_PAGEALLOC 2016-02-16 15:40:30 +00:00
pgd.c arm64: mm: move pgd_cache initialisation to pgtable_cache_init 2016-01-05 15:43:10 +00:00
proc-macros.S arm64: kernel: fix architected PMU registers unconditional access 2016-01-25 11:09:06 +00:00
proc.S arm64: mm: add code to safely replace TTBR1_EL1 2016-02-16 15:10:45 +00:00