diff mbox

[2/2] powerpc/numa: ensure per-cpu NUMA mappings are correct on topology update

Message ID 20141018005040.GB3969@linux.vnet.ibm.com (mailing list archive)
State Accepted
Commit 2c0a33f9861d38631245f7ef434ecad3413324fb
Delegated to: Michael Ellerman
Headers show

Commit Message

Nishanth Aravamudan Oct. 18, 2014, 12:50 a.m. UTC
We received a report of warning in kernel/sched/core.c where the sched
group was NULL on an LPAR after a topology update. This seems to occur
because after the topology update has moved the CPUs, cpu_to_node is
returning the old value still, which ends up breaking the consistency of
the NUMA topology in the per-cpu maps. Ensure that we update the per-cpu
fields when we re-map CPUs.
    
Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>

Comments

Michael Ellerman Oct. 21, 2014, 4:36 a.m. UTC | #1
On Sat, 2014-18-10 at 00:50:40 UTC, Nishanth Aravamudan wrote:
> We received a report of warning in kernel/sched/core.c where the sched
> group was NULL on an LPAR after a topology update. This seems to occur
> because after the topology update has moved the CPUs, cpu_to_node is
> returning the old value still, which ends up breaking the consistency of
> the NUMA topology in the per-cpu maps. Ensure that we update the per-cpu
> fields when we re-map CPUs.

This looks like a bug fix, I assume you want it to go in for 3.18 ?

cheers
Nishanth Aravamudan Oct. 28, 2014, 5:33 p.m. UTC | #2
Hi Michael,

On 21.10.2014 [15:36:27 +1100], Michael Ellerman wrote:
> On Sat, 2014-18-10 at 00:50:40 UTC, Nishanth Aravamudan wrote:
> > We received a report of warning in kernel/sched/core.c where the sched
> > group was NULL on an LPAR after a topology update. This seems to occur
> > because after the topology update has moved the CPUs, cpu_to_node is
> > returning the old value still, which ends up breaking the consistency of
> > the NUMA topology in the per-cpu maps. Ensure that we update the per-cpu
> > fields when we re-map CPUs.
> 
> This looks like a bug fix, I assume you want it to go in for 3.18 ?

Yes, please!

Thanks,
Nish
diff mbox

Patch

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 86fdb004ad2f..048be62dc979 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1488,11 +1488,14 @@  static int update_cpu_topology(void *data)
 	cpu = smp_processor_id();
 
 	for (update = data; update; update = update->next) {
+		int new_nid = update->new_nid;
 		if (cpu != update->cpu)
 			continue;
 
 		unmap_cpu_from_node(cpu);
-		map_cpu_to_node(cpu, update->new_nid);
+		map_cpu_to_node(cpu, new_nid);
+		set_cpu_numa_node(cpu, new_nid);
+		set_cpu_numa_mem(cpu, local_memory_node(new_nid));
 		vdso_getcpu_init();
 	}