2022-03-31 08:12:55

by Zqiang

[permalink] [raw]
Subject: [PATCH v2] workqueue: Restrict kworker in the offline CPU pool running on housekeeping CPUs

When CPU going offline, all workers in this CPU pool will lose
affinity to this CPU, and may run to isolated CPU. like kworker
in unbound pool, set CPU affinity of these kworker is
wq_unbound_cpumask.

Signed-off-by: Zqiang <[email protected]>
---
v1->v2:
Replace housekeeping_cpumask(HK_TYPE_WQ) with wq_unbound_cpumask.

kernel/workqueue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index abcc9a2ac319..b447012df177 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -5023,7 +5023,7 @@ static void unbind_workers(int cpu)

for_each_pool_worker(worker, pool) {
kthread_set_per_cpu(worker->task, -1);
- WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, cpu_possible_mask) < 0);
+ WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, wq_unbound_cpumask) < 0);
}

mutex_unlock(&wq_pool_attach_mutex);
--
2.25.1