In early_init_dt_scan_cpus() -> allocate_paca(), using ppc64_bolted_size() to get the limitation. Although MMU_SEGSIZE_256M is enough for boot cpu's paca, but in fact the bolted segment size may be MMU_SEGSIZE_1T. Hence moving mmu_early_init_devtree() a little earlier, and let any callers of ppc64_bolted_size() get the right value.
Signed-off-by: Pingfan Liu <kernelf...@gmail.com> Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org> Cc: Michael Ellerman <m...@ellerman.id.au> Cc: Hari Bathini <hbath...@linux.ibm.com> Cc: Mahesh Salgaonkar <mah...@linux.vnet.ibm.com> Cc: Anton Blanchard <an...@samba.org> --- arch/powerpc/kernel/prom.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index c4d7078..cae4a78 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -760,6 +760,7 @@ void __init early_init_devtree(void *params) DBG("Scanning CPUs ...\n"); dt_cpu_ftrs_scan(); + mmu_early_init_devtree(); /* Retrieve CPU related informations from the flat tree * (altivec support, boot CPU ID, ...) @@ -777,8 +778,6 @@ void __init early_init_devtree(void *params) spinning_secondaries = boot_cpu_count - 1; #endif - mmu_early_init_devtree(); - #ifdef CONFIG_PPC_POWERNV /* Scan and build the list of machine check recoverable ranges */ of_scan_flat_dt(early_init_dt_scan_recoverable_ranges, NULL); -- 2.7.4