Skip to content

Commit

Permalink
arm64/numa: remove the limitation that cpu0 must bind to node0
Browse files Browse the repository at this point in the history
1. Remove the old binding code.
2. Read the nid of cpu0 from dts.
3. Fallback the nid of cpu0 to 0 when numa=off is set in bootargs.

Signed-off-by: Zhen Lei <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
  • Loading branch information
Zhen Lei authored and wildea01 committed Sep 9, 2016
1 parent df7ffa3 commit 7ba5f60
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
1 change: 1 addition & 0 deletions arch/arm64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,7 @@ static void __init of_parse_and_init_cpus(void)
}

bootcpu_valid = true;
early_map_cpu_to_node(0, of_node_to_nid(dn));

/*
* cpu_logical_map has already been
Expand Down
16 changes: 10 additions & 6 deletions arch/arm64/mm/numa.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,24 @@ static void __init setup_node_to_cpumask_map(void)
*/
void numa_store_cpu_info(unsigned int cpu)
{
map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]);
map_cpu_to_node(cpu, cpu_to_node_map[cpu]);
}

void __init early_map_cpu_to_node(unsigned int cpu, int nid)
{
/* fallback to node 0 */
if (nid < 0 || nid >= MAX_NUMNODES)
if (nid < 0 || nid >= MAX_NUMNODES || numa_off)
nid = 0;

cpu_to_node_map[cpu] = nid;

/*
* We should set the numa node of cpu0 as soon as possible, because it
* has already been set up online before. cpu_to_node(0) will soon be
* called.
*/
if (!cpu)
set_cpu_numa_node(cpu, nid);
}

#ifdef CONFIG_HAVE_SETUP_PER_CPU_AREA
Expand Down Expand Up @@ -393,10 +401,6 @@ static int __init numa_init(int (*init_func)(void))

setup_node_to_cpumask_map();

/* init boot processor */
cpu_to_node_map[0] = 0;
map_cpu_to_node(0, 0);

return 0;
}

Expand Down

0 comments on commit 7ba5f60

Please sign in to comment.