aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorJuri Lelli <juri.lelli@redhat.com>2024-01-16 17:19:27 +0100
committerTejun Heo <tj@kernel.org>2024-01-16 08:47:30 -1000
commit85f0ab43f9de62a4b9c1b503b07f1c33e5a6d2ab (patch)
tree3d2f4adf50efcf8735f1a14aefeb7ee00778169d /kernel/workqueue.c
parentab5e5b99a949b9f282c605d00557b2c727856485 (diff)
downloadlinux-85f0ab43f9de62a4b9c1b503b07f1c33e5a6d2ab.tar.gz
kernel/workqueue: Bind rescuer to unbound cpumask for WQ_UNBOUND
At the time they are created unbound workqueues rescuers currently use cpu_possible_mask as their affinity, but this can be too wide in case a workqueue unbound mask has been set as a subset of cpu_possible_mask. Make new rescuers use their associated workqueue unbound cpumask from the start. Signed-off-by: Juri Lelli <juri.lelli@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r--kernel/workqueue.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 8d9dec14b9bb8..ed442cefea7c4 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4652,7 +4652,10 @@ static int init_rescuer(struct workqueue_struct *wq)
}
wq->rescuer = rescuer;
- kthread_bind_mask(rescuer->task, cpu_possible_mask);
+ if (wq->flags & WQ_UNBOUND)
+ kthread_bind_mask(rescuer->task, wq->unbound_attrs->cpumask);
+ else
+ kthread_bind_mask(rescuer->task, cpu_possible_mask);
wake_up_process(rescuer->task);
return 0;