arm64: mm: Introduce DEFAULT_MAP_WINDOW
authorSteve Capper <steve.capper@arm.com>
Thu, 6 Dec 2018 22:50:37 +0000 (22:50 +0000)
committerWill Deacon <will.deacon@arm.com>
Mon, 10 Dec 2018 18:42:17 +0000 (18:42 +0000)
commit363524d2b12270d86677e1154ecc1c5061f43219
tree1b4653ee1c9509e7233e8d3a75a2f8cb8c66f62b
parentf6795053dac8d4d2f90d4a98842dd6d2ccd544ad
arm64: mm: Introduce DEFAULT_MAP_WINDOW

We wish to introduce a 52-bit virtual address space for userspace but
maintain compatibility with software that assumes the maximum VA space
size is 48 bit.

In order to achieve this, on 52-bit VA systems, we make mmap behave as
if it were running on a 48-bit VA system (unless userspace explicitly
requests a VA where addr[51:48] != 0).

On a system running a 52-bit userspace we need TASK_SIZE to represent
the 52-bit limit as it is used in various places to distinguish between
kernelspace and userspace addresses.

Thus we need a new limit for mmap, stack, ELF loader and EFI (which uses
TTBR0) to represent the non-extended VA space.

This patch introduces DEFAULT_MAP_WINDOW and DEFAULT_MAP_WINDOW_64 and
switches the appropriate logic to use that instead of TASK_SIZE.

Signed-off-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/elf.h
arch/arm64/include/asm/processor.h
arch/arm64/mm/init.c
drivers/firmware/efi/arm-runtime.c
drivers/firmware/efi/libstub/arm-stub.c