arm64: mm: ignore memory above supported physical address size
authorKristina Martsenko <kristina.martsenko@arm.com>
Thu, 18 Jan 2018 19:13:11 +0000 (19:13 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 19 Jan 2018 13:09:40 +0000 (13:09 +0000)
When booting a kernel without 52-bit PA support (e.g. a kernel with 4k
pages) on a system with 52-bit memory, the kernel will currently try to
use the 52-bit memory and crash. Fix this by ignoring any memory higher
than what the kernel supports.

Fixes: f77d281713d4 ("arm64: enable 52-bit physical address support")
Signed-off-by: Kristina Martsenko <kristina.martsenko@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/init.c

index 672094ed7e07031e7b557d90096aeeda1318d8a1..285745b2ca38d4aacd9c855585bf1a742fb4692d 100644 (file)
@@ -366,6 +366,9 @@ void __init arm64_memblock_init(void)
        /* Handle linux,usable-memory-range property */
        fdt_enforce_memory_region();
 
+       /* Remove memory above our supported physical address size */
+       memblock_remove(1ULL << PHYS_MASK_SHIFT, ULLONG_MAX);
+
        /*
         * Ensure that the linear region takes up exactly half of the kernel
         * virtual address space. This way, we can distinguish a linear address