From: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Lai Jiangshan <laijs@cn.fujitsu.com>, Tejun Heo <tj@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "\"Ishimatsu, Yasuaki/石松 靖章\"" <isimatu.yasuaki@jp.fujitsu.com>,
"Tang Chen" <tangchen@cn.fujitsu.com>,
"guz.fnst@cn.fujitsu.com" <guz.fnst@cn.fujitsu.com>
Subject: [PATCH 2/2] workqueue: update cpumask at CPU_ONLINE if necessary
Date: Wed, 17 Dec 2014 01:51:40 +0900 [thread overview]
Message-ID: <5490631C.1010309@jp.fujitsu.com> (raw)
In-Reply-To: <54905F87.2030302@jp.fujitsu.com>
In some case, cpu's numa affinity will be changed in cpu_up().
It happens after a new node is onlined.
(in x86, online cpus are tied to onlined node at boot.
so, if memory is added later, cpu mapping can be changed at cpu_up()
Although wq_numa_possible_cpumask at el. are maintained against
node hotplug, this case should be handled.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
---
kernel/workqueue.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index f6ad05a..59d8be5 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4618,6 +4618,27 @@ void workqueue_node_unregister(int node)
mutex_unlock(&wq_pool_mutex);
}
+static void workqueue_may_update_numa_affinity(int cpu)
+{
+ int curnode = cpu_to_node(cpu);
+ int node;
+
+ if (likely(cpumask_test_cpu(cpu, wq_numa_possible_cpumask[curnode])))
+ return;
+
+ /* cpu<->node relationship is changed in cpu_up() */
+ for_each_node_state(node, N_POSSIBLE)
+ cpumask_clear_cpu(cpu, wq_numa_possible_cpumask[node]);
+
+ workqueue_update_cpu_numa_affinity(cpu, curnode);
+}
+#else
+
+static void workqueue_may_update_numa_affinity(int cpu)
+{
+ return;
+}
+
#endif
/*
@@ -4647,6 +4668,8 @@ static int workqueue_cpu_up_callback(struct notifier_block *nfb,
case CPU_ONLINE:
mutex_lock(&wq_pool_mutex);
+ workqueue_may_update_numa_affinity(cpu);
+
for_each_pool(pool, pi) {
mutex_lock(&pool->attach_mutex);
--
1.8.3.1
prev parent reply other threads:[~2014-12-16 16:51 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-16 16:36 [PATCH 0/2] workqueue: fix a bug when numa mapping is changed v4 Kamezawa Hiroyuki
2014-12-16 16:45 ` [PATCH 1/2] workqueue: update numa affinity info at node hotplug Kamezawa Hiroyuki
2014-12-17 1:36 ` Lai Jiangshan
2014-12-17 3:22 ` Kamezawa Hiroyuki
2014-12-17 4:56 ` Kamezawa Hiroyuki
2014-12-25 20:11 ` Tejun Heo
2015-01-13 7:19 ` Lai Jiangshan
2015-01-13 15:22 ` Tejun Heo
2015-01-14 2:47 ` Lai Jiangshan
2015-01-14 8:54 ` [RFC PATCH 0/2 shit_A shit_B] workqueue: fix wq_numa bug Lai Jiangshan
2015-01-14 8:54 ` [RFC PATCH 1/2 shit_A shit_B] workqueue: reset pool->node and unhash the pool when the node is offline Lai Jiangshan
2015-01-14 8:54 ` [RFC PATCH 2/2 shit_A] workqueue: update wq_numa when cpu_present_mask changed Lai Jiangshan
2015-01-14 8:54 ` [RFC PATCH 2/3 shit_B] workqueue: remove wq_numa_possible_cpumask Lai Jiangshan
2015-01-14 8:54 ` [RFC PATCH 3/3 shit_B] workqueue: directly update attrs of pools when cpu hot[un]plug Lai Jiangshan
2015-01-16 5:22 ` [RFC PATCH 0/2 shit_A shit_B] workqueue: fix wq_numa bug Yasuaki Ishimatsu
2015-01-16 8:04 ` Lai Jiangshan
2015-01-23 6:13 ` Izumi, Taku
2015-01-23 8:18 ` Lai Jiangshan
2015-01-14 13:57 ` [PATCH 1/2] workqueue: update numa affinity info at node hotplug Tejun Heo
2015-01-15 1:23 ` Lai Jiangshan
2014-12-16 16:51 ` Kamezawa Hiroyuki [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5490631C.1010309@jp.fujitsu.com \
--to=kamezawa.hiroyu@jp.fujitsu.com \
--cc=guz.fnst@cn.fujitsu.com \
--cc=isimatu.yasuaki@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tangchen@cn.fujitsu.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.