diff options
author | Juri Lelli <juri.lelli@redhat.com> | 2024-01-16 17:19:27 +0100 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2024-01-16 08:47:30 -1000 |
commit | 85f0ab43f9de62a4b9c1b503b07f1c33e5a6d2ab (patch) | |
tree | 3d2f4adf50efcf8735f1a14aefeb7ee00778169d | |
parent | ab5e5b99a949b9f282c605d00557b2c727856485 (diff) |
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>
-rw-r--r-- | kernel/workqueue.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 8d9dec14b9bb..ed442cefea7c 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; |