This patch series brings support for 52-bit userspace VAs to systems that have ARMv8.2-LVA and are running with a 48-bit VA_BITS and a 64KB PAGE_SIZE. If no hardware support is present, the kernel runs with a 48-bit VA space for userspace. Userspace can exploit this feature by providing an address hint to mmap where addr[51:48] != 0. Otherwise all the VA mappings will behave in the same way as a 48-bit VA system (this is to maintain compatibility with software that assumes the maximum VA size on arm64 is 48-bit). This patch series applies to 4.20-rc1. Testing was in a model with Trusted Firmware and UEFI for boot. Changed in V5, ttbr1 offsetting code simplified. Extra patch added to check for VA space support mismatch between CPUs. Changed in V4, pgd_index changes dropped in favour of offsetting the ttbr1. This is performed in a new patch, #4. Changed in V3, COMPAT fixes added (and tested with 32-bit userspace code). Extra patch added to allow forcing all userspace allocations to come from 52-bits (to allow for debugging and testing). The major change to V2 of the series is that mm/mmap.c is altered in the first patch of the series (rather than copied over to arch/arm64). Steve Capper (7): mm: mmap: Allow for "high" userspace addresses arm64: mm: Introduce DEFAULT_MAP_WINDOW arm64: mm: Define arch_get_mmap_end, arch_get_mmap_base arm64: mm: Offset TTBR1 to allow 52-bit PTRS_PER_PGD arm64: mm: Prevent mismatched 52-bit VA support arm64: mm: introduce 52-bit userspace support arm64: mm: Allow forcing all userspace addresses to 52-bit arch/arm64/Kconfig | 17 +++++++++++ arch/arm64/include/asm/assembler.h | 30 ++++++++++++++++--- arch/arm64/include/asm/elf.h | 4 +++ arch/arm64/include/asm/mmu_context.h | 3 ++ arch/arm64/include/asm/pgtable-hwdef.h | 9 ++++++ arch/arm64/include/asm/processor.h | 36 ++++++++++++++++++---- arch/arm64/kernel/head.S | 40 +++++++++++++++++++++++++ arch/arm64/kernel/hibernate-asm.S | 1 + arch/arm64/kernel/smp.c | 5 ++++ arch/arm64/mm/fault.c | 2 +- arch/arm64/mm/init.c | 2 +- arch/arm64/mm/mmu.c | 1 + arch/arm64/mm/proc.S | 14 ++++++++- drivers/firmware/efi/arm-runtime.c | 2 +- drivers/firmware/efi/libstub/arm-stub.c | 2 +- mm/mmap.c | 25 +++++++++++----- 16 files changed, 171 insertions(+), 22 deletions(-) -- 2.19.2