Thread (57 messages) 57 messages, 7 authors, 2019-10-30

Re: [PATCH v6] numa: make node_to_cpumask_map() NUMA_NO_NODE aware

From: Peter Zijlstra <peterz@infradead.org>
Date: 2019-09-23 15:51:07
Also in: linux-alpha, linux-mips, linux-s390, linux-sh, lkml, sparclinux

On Mon, Sep 23, 2019 at 05:28:56PM +0200, Michal Hocko wrote:
On Mon 23-09-19 17:15:19, Peter Zijlstra wrote:
quoted
quoted
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 4123100e..9859acb 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -861,6 +861,9 @@ void numa_remove_cpu(int cpu)
  */
 const struct cpumask *cpumask_of_node(int node)
 {
+	if (node == NUMA_NO_NODE)
+		return cpu_online_mask;
This mandates the caller holds cpus_read_lock() or something, I'm pretty
sure that if I put:

	lockdep_assert_cpus_held();
Is this documented somewhere?
No idea... common sense :-)
Also how does that differ from a normal
case when a proper node is used? The cpumask will always be dynamic in
the cpu hotplug presence, right?
As per normal yes, and I'm fairly sure there's a ton of bugs. Any
'online' state is subject to change except when you're holding
sufficient locks to stop it.

Disabling preemption also stabilizes it, because cpu unplug relies on
stop-machine.
quoted
here, it comes apart real quick. Without holding the cpu hotplug lock,
the online mask is gibberish.
Can the returned cpu mask go away?
No, the cpu_online_mask itself has static storage, the contents OTOH can
change at will. Very little practical difference :-)

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help