]> git.baikalelectronics.ru Git - kernel.git/commitdiff
workqueue: Restrict kworker in the offline CPU pool running on housekeeping CPUs
authorZqiang <qiang1.zhang@intel.com>
Thu, 31 Mar 2022 05:57:17 +0000 (13:57 +0800)
committerTejun Heo <tj@kernel.org>
Thu, 21 Apr 2022 22:31:04 +0000 (12:31 -1000)
When a CPU is going offline, all workers on the CPU's pool will have their
cpus_allowed cleared to cpu_possible_mask and can run on any CPUs including
the isolated ones. Instead, set cpus_allowed to wq_unbound_cpumask so that
the can avoid isolated CPUs.

Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 0d2514b4ff0d2baf5020d0bd71fec91ed1f283fa..4056f2a3f9d59c0dbaa776e5bb8bce31390a1600 100644 (file)
@@ -5001,7 +5001,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);