linux_dsm_epyc7002/arch/arm64/mm
Steve Capper 67e7fdfcc6 arm64: mm: introduce 52-bit userspace support
On arm64 there is optional support for a 52-bit virtual address space.
To exploit this one has to be running with a 64KB page size and be
running on hardware that supports this.

For an arm64 kernel supporting a 48 bit VA with a 64KB page size,
some changes are needed to support a 52-bit userspace:
 * TCR_EL1.T0SZ needs to be 12 instead of 16,
 * TASK_SIZE needs to reflect the new size.

This patch implements the above when the support for 52-bit VAs is
detected at early boot time.

On arm64 userspace addresses translation is controlled by TTBR0_EL1. As
well as userspace, TTBR0_EL1 controls:
 * The identity mapping,
 * EFI runtime code.

It is possible to run a kernel with an identity mapping that has a
larger VA size than userspace (and for this case __cpu_set_tcr_t0sz()
would set TCR_EL1.T0SZ as appropriate). However, when the conditions for
52-bit userspace are met; it is possible to keep TCR_EL1.T0SZ fixed at
12. Thus in this patch, the TCR_EL1.T0SZ size changing logic is
disabled.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-12-10 18:42:17 +00:00
..
cache.S arm64: Fix minor issues with the dcache_by_line_op macro 2018-12-10 15:03:51 +00:00
context.c arm64: mm: Drop the unused cpu parameter 2018-10-09 17:17:23 +01:00
copypage.c arm64: Defer dcache flush in __cpu_copy_user_page 2015-12-17 11:07:13 +00:00
dma-mapping.c arm64: fix warnings without CONFIG_IOMMU_DMA 2018-11-02 19:27:22 +01:00
dump.c arm64: dump: Use consistent capitalisation for page-table dumps 2018-09-10 16:15:23 +01:00
extable.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fault.c arm64: mm: introduce 52-bit userspace support 2018-12-10 18:42:17 +00:00
flush.c arm64: mm: Export __sync_icache_dcache() for xen-privcmd 2018-07-27 13:12:15 +01:00
hugetlbpage.c arm64: hugetlb: Register hugepages during arch init 2018-12-06 17:01:13 +00:00
init.c arm64: mm: Introduce DEFAULT_MAP_WINDOW 2018-12-10 18:42:17 +00:00
ioremap.c arm64: use is_vmalloc_addr 2017-02-09 13:47:56 +00:00
kasan_init.c mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmap.c exec: pass stack rlimit into mm layout functions 2018-04-11 10:28:37 -07:00
mmu.c arm64: mm: introduce 52-bit userspace support 2018-12-10 18:42:17 +00:00
numa.c mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
pageattr.c arm64: mm: apply r/o permissions of VM areas to its linear alias as well 2018-11-20 11:38:26 +00:00
pgd.c arm64: handle 52-bit addresses in TTBR 2017-12-22 17:35:21 +00:00
physaddr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
proc.S arm64: mm: introduce 52-bit userspace support 2018-12-10 18:42:17 +00:00
ptdump_debugfs.c ARM64: dump: Convert to use DEFINE_SHOW_ATTRIBUTE macro 2018-07-02 10:36:37 +01:00