In order to extract NUMA information from the device tree, we need to
have the tree in its unflattened form.
Move the call to bootmem_init() in the tail of paging_init() into
setup_arch, and adjust header files so that its declaration is
visible.
Move the unflatten_device_tree() call between the calls to
paging_init() and bootmem_init().  Follow on patches add NUMA handling
to bootmem_init().
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
 #define ASID(mm)       ((mm)->context.id.counter & 0xffff)
 
 extern void paging_init(void);
+extern void bootmem_init(void);
 extern void __iomem *early_io_map(phys_addr_t phys, unsigned long virt);
 extern void init_mem_pgprot(void);
 extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
 
 
        paging_init();
 
+       if (acpi_disabled)
+               unflatten_device_tree();
+
+       bootmem_init();
+
        kasan_init();
 
        request_standard_resources();
 
        early_ioremap_reset();
 
-       if (acpi_disabled) {
-               unflatten_device_tree();
+       if (acpi_disabled)
                psci_dt_init();
-       } else {
+       else
                psci_acpi_init();
-       }
+
        xen_early_init();
 
        cpu_read_bootcpu_ops();
 
-extern void __init bootmem_init(void);
 
 void fixup_init(void);
 
         */
        memblock_free(__pa(swapper_pg_dir) + PAGE_SIZE,
                      SWAPPER_DIR_SIZE - PAGE_SIZE);
-
-       bootmem_init();
 }
 
 /*