powerpc/mm/numa: move numa topology discovery earlier

Split sparsemem initialisation from basic numa topology discovery.
Move the parsing earlier in boot, before pacas are allocated.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Nicholas Piggin
2018-02-14 01:08:16 +10:00
committed by Michael Ellerman
parent b575454fa3
commit 9bd9be006c
4 changed files with 27 additions and 14 deletions

View File

@@ -836,18 +836,13 @@ out:
of_node_put(rtas);
}
void __init initmem_init(void)
void __init mem_topology_setup(void)
{
int nid, cpu;
max_low_pfn = memblock_end_of_DRAM() >> PAGE_SHIFT;
max_pfn = max_low_pfn;
int cpu;
if (parse_numa_properties())
setup_nonnuma();
memblock_dump_all();
/*
* Modify the set of possible NUMA nodes to reflect information
* available about the set of online nodes, and the set of nodes
@@ -858,6 +853,23 @@ void __init initmem_init(void)
find_possible_nodes();
setup_node_to_cpumask_map();
reset_numa_cpu_lookup_table();
for_each_present_cpu(cpu)
numa_setup_cpu(cpu);
}
void __init initmem_init(void)
{
int nid;
max_low_pfn = memblock_end_of_DRAM() >> PAGE_SHIFT;
max_pfn = max_low_pfn;
memblock_dump_all();
for_each_online_node(nid) {
unsigned long start_pfn, end_pfn;
@@ -868,10 +880,6 @@ void __init initmem_init(void)
sparse_init();
setup_node_to_cpumask_map();
reset_numa_cpu_lookup_table();
/*
* We need the numa_cpu_lookup_table to be accurate for all CPUs,
* even before we online them, so that we can use cpu_to_{node,mem}
@@ -881,8 +889,6 @@ void __init initmem_init(void)
*/
cpuhp_setup_state_nocalls(CPUHP_POWER_NUMA_PREPARE, "powerpc/numa:prepare",
ppc_numa_cpu_prepare, ppc_numa_cpu_dead);
for_each_present_cpu(cpu)
numa_setup_cpu(cpu);
}
static int __init early_numa(char *p)