OSDN Git Service

powerpc/prom: move the device tree if not in declared memory.
authorChristophe Leroy <christophe.leroy@c-s.fr>
Mon, 17 Dec 2018 14:18:27 +0000 (14:18 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Dec 2018 11:21:20 +0000 (22:21 +1100)
If the device tree doesn't reside in the memory which is declared
inside it, it has to be moved as well as this memory will not be
mapped by the kernel.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/prom.c

index 87a68e2..4181ec7 100644 (file)
@@ -124,8 +124,8 @@ static void __init move_device_tree(void)
        size = fdt_totalsize(initial_boot_params);
 
        if ((memory_limit && (start + size) > PHYSICAL_START + memory_limit) ||
-                       overlaps_crashkernel(start, size) ||
-                       overlaps_initrd(start, size)) {
+           !memblock_is_memory(start + size - 1) ||
+           overlaps_crashkernel(start, size) || overlaps_initrd(start, size)) {
                p = __va(memblock_phys_alloc(size, PAGE_SIZE));
                memcpy(p, initial_boot_params, size);
                initial_boot_params = p;