[PATCH] powerpc/topology: Update numa mask when cpu node mapping changes

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE2897d

2 messages, 1 author, 2018-10-10 · open the first message on its own page

[PATCH] powerpc/topology: Update numa mask when cpu node mapping changes

From: Srikar Dronamraju <hidden>
Date: 2018-10-10 04:26:51

Commit 2ea626306810 ("powerpc/topology: Get topology for shared
processors at boot") will update the cpu node topology for shared lpars
on PowerVM.

However shared lpars on PowerVM also support VPHN and PRRN events.
On receiving a VPHN, PRRN events, cpu to node mapping might change.

Scheduler maintains sched_domains_numa_masks[], which is currently not
updated on cpu to node mapping changes. This can lead to machine
regressions and performance regressions.

Fix numa_update_cpu_topology() to update sched_domains_numa_masks[].

Signed-off-by: Srikar Dronamraju <redacted>
---
 arch/powerpc/mm/numa.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 3ea5b05ee6be..bf34384aa314 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -29,6 +29,7 @@
 #include <linux/seq_file.h>
 #include <linux/uaccess.h>
 #include <linux/slab.h>
+#include <linux/sched/hotplug.h>
 #include <asm/cputhreads.h>
 #include <asm/sparsemem.h>
 #include <asm/prom.h>
@@ -1424,6 +1425,19 @@ int numa_update_cpu_topology(bool cpus_locked)
 		changed = 1;
 	}
 
+	/*
+	 * Scheduler maintains a sched_domain_numa_masks table that needs to
+	 * be updated whenever cpu-node mapping changes. Cpu-node mapping
+	 * change only with vphn and prrn.
+	 */
+	if (!(topology_inited && (vphn_enabled || prrn_enabled)))
+		goto out;
+
+	for_each_cpu(cpu, &updated_cpus) {
+		sched_cpu_deactivate(cpu);
+		sched_cpu_activate(cpu);
+	}
+
 out:
 	kfree(updates);
 	topology_update_needed = 0;
-- 
2.12.3

Re: [PATCH] powerpc/topology: Update numa mask when cpu node mapping changes

From: Srikar Dronamraju <hidden>
Date: 2018-10-10 05:39:54

* Srikar Dronamraju [off-list ref] [2018-10-10 09:54:46]:
Commit 2ea626306810 ("powerpc/topology: Get topology for shared
processors at boot") will update the cpu node topology for shared lpars
on PowerVM.

However shared lpars on PowerVM also support VPHN and PRRN events.
On receiving a VPHN, PRRN events, cpu to node mapping might change.

Scheduler maintains sched_domains_numa_masks[], which is currently not
updated on cpu to node mapping changes. This can lead to machine
regressions and performance regressions.
s/regressions and performance regressions./hangs or performance hit./
Fix numa_update_cpu_topology() to update sched_domains_numa_masks[].
-- 
Thanks and Regards
Srikar Dronamraju
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help