]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
arm64: mm: Introduce MAX_USER_VA_BITS definition
authorWill Deacon <will.deacon@arm.com>
Wed, 12 Dec 2018 11:51:40 +0000 (11:51 +0000)
committerWill Deacon <will.deacon@arm.com>
Wed, 12 Dec 2018 11:51:40 +0000 (11:51 +0000)
With the introduction of 52-bit virtual addressing for userspace, we are
now in a position where the virtual addressing capability of userspace
may exceed that of the kernel. Consequently, the VA_BITS definition
cannot be used blindly, since it reflects only the size of kernel
virtual addresses.

This patch introduces MAX_USER_VA_BITS which is either VA_BITS or 52
depending on whether 52-bit virtual addressing has been configured at
build time, removing a few places where the 52 is open-coded based on
explicit CONFIG_ guards.

Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/memory.h
arch/arm64/include/asm/pgtable-hwdef.h
arch/arm64/include/asm/processor.h

index 56562ff01076d2c654520d8e54db022e12227a97..6747a3eddeb107f67e45eb9867b9782762dd9abb 100644 (file)
 #define KERNEL_START      _text
 #define KERNEL_END        _end
 
+#ifdef CONFIG_ARM64_USER_VA_BITS_52
+#define MAX_USER_VA_BITS       52
+#else
+#define MAX_USER_VA_BITS       VA_BITS
+#endif
+
 /*
  * KASAN requires 1/8th of the kernel virtual address space for the shadow
  * region. KASAN can bloat the stack significantly, so double the (minimum)
index 2a700f7b12d2aa04086a797c0d9b09f6883b8658..54a37660b8c974f22ec8d9484cf50ed9fb61a267 100644 (file)
 #define PGDIR_SHIFT            ARM64_HW_PGTABLE_LEVEL_SHIFT(4 - CONFIG_PGTABLE_LEVELS)
 #define PGDIR_SIZE             (_AC(1, UL) << PGDIR_SHIFT)
 #define PGDIR_MASK             (~(PGDIR_SIZE-1))
-#ifdef CONFIG_ARM64_USER_VA_BITS_52
-#define PTRS_PER_PGD           (1 << (52 - PGDIR_SHIFT))
-#else
-#define PTRS_PER_PGD           (1 << (VA_BITS - PGDIR_SHIFT))
-#endif
+#define PTRS_PER_PGD           (1 << (MAX_USER_VA_BITS - PGDIR_SHIFT))
 
 /*
  * Section address mask and size definitions.
index 538ecbc15067001470ff3cd60d2f0ae01339fa9a..bbecc6fe3e5b3b12599f35091e8fa53f8cbf37fa 100644 (file)
 #define __ASM_PROCESSOR_H
 
 #define KERNEL_DS              UL(-1)
-#ifdef CONFIG_ARM64_USER_VA_BITS_52
-#define USER_DS                        ((UL(1) << 52) - 1)
-#else
-#define USER_DS                        ((UL(1) << VA_BITS) - 1)
-#endif /* CONFIG_ARM64_USER_VA_BITS_52 */
+#define USER_DS                        ((UL(1) << MAX_USER_VA_BITS) - 1)
 
 /*
  * On arm64 systems, unaligned accesses by the CPU are cheap, and so there is