Messages in this thread Patch in this message | | | From | Lai Jiangshan <> | Subject | [PATCH 02/10] workqueue: use cpu_possible_mask instead of cpu_active_mask to break affinity | Date | Mon, 14 Dec 2020 23:54:49 +0800 |
| |
From: Lai Jiangshan <laijs@linux.alibaba.com>
There might be other CPU online. The workers losing binding on its CPU should have chance to work on those later onlined CPUs.
Fixes: 06249738a41a ("workqueue: Manually break affinity on hotplug") Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com> --- kernel/workqueue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index aba71ab359dd..1f5b8385c0cf 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -4909,8 +4909,9 @@ static void unbind_workers(int cpu) raw_spin_unlock_irq(&pool->lock); + /* don't rely on the scheduler to force break affinity for us. */ for_each_pool_worker(worker, pool) - WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, cpu_active_mask) < 0); + WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, cpu_possible_mask) < 0); mutex_unlock(&wq_pool_attach_mutex); -- 2.19.1.6.gb485710b
| |