at runtime, and does not affect PEs that do not implement
          this feature.
 
+config ARM64_FORCE_52BIT
+       bool "Force 52-bit virtual addresses for userspace"
+       depends on ARM64_52BIT_VA && EXPERT
+       help
+         For systems with 52-bit userspace VAs enabled, the kernel will attempt
+         to maintain compatibility with older software by providing 48-bit VAs
+         unless a hint is supplied to mmap.
+
+         This configuration option disables the 48-bit compatibility logic, and
+         forces all userspace addresses to be 52-bit on HW that supports it. One
+         should only enable this configuration option for stress testing userspace
+         memory management code. If unsure say N here.
+
 endmenu
 
 config ARM64_SVE
 
  * 64-bit, this is above 4GB to leave the entire 32-bit address
  * space open for things that want to use the area for 32-bit pointers.
  */
+#ifdef CONFIG_ARM64_FORCE_52BIT
+#define ELF_ET_DYN_BASE                (2 * TASK_SIZE_64 / 3)
+#else
 #define ELF_ET_DYN_BASE                (2 * DEFAULT_MAP_WINDOW_64 / 3)
+#endif /* CONFIG_ARM64_FORCE_52BIT */
 
 #ifndef __ASSEMBLY__
 
 
 #define DEFAULT_MAP_WINDOW     DEFAULT_MAP_WINDOW_64
 #endif /* CONFIG_COMPAT */
 
-#define TASK_UNMAPPED_BASE     (PAGE_ALIGN(DEFAULT_MAP_WINDOW / 4))
+#ifdef CONFIG_ARM64_FORCE_52BIT
+#define STACK_TOP_MAX          TASK_SIZE_64
+#define TASK_UNMAPPED_BASE     (PAGE_ALIGN(TASK_SIZE / 4))
+#else
 #define STACK_TOP_MAX          DEFAULT_MAP_WINDOW_64
+#define TASK_UNMAPPED_BASE     (PAGE_ALIGN(DEFAULT_MAP_WINDOW / 4))
+#endif /* CONFIG_ARM64_FORCE_52BIT */
 
 #ifdef CONFIG_COMPAT
 #define AARCH32_VECTORS_BASE   0xffff0000
 #define STACK_TOP              STACK_TOP_MAX
 #endif /* CONFIG_COMPAT */
 
+#ifndef CONFIG_ARM64_FORCE_52BIT
 #define arch_get_mmap_end(addr) ((addr > DEFAULT_MAP_WINDOW) ? TASK_SIZE :\
                                DEFAULT_MAP_WINDOW)
 
 #define arch_get_mmap_base(addr, base) ((addr > DEFAULT_MAP_WINDOW) ? \
                                        base + TASK_SIZE - DEFAULT_MAP_WINDOW :\
                                        base)
+#endif /* CONFIG_ARM64_FORCE_52BIT */
 
 extern phys_addr_t arm64_dma_phys_limit;
 #define ARCH_LOW_ADDRESS_LIMIT (arm64_dma_phys_limit - 1)