Messages in this thread | | | Date | Mon, 4 Apr 2022 07:40:04 -1000 | From | Tejun Heo <> | Subject | Re: [PATCH] workqueue: Create kworker only for boot CPU pool prior SMP initialization |
| |
On Thu, Mar 31, 2022 at 09:14:35PM +0800, Zqiang wrote: > The workqueue_init() is called before SMP initialization, which > means only the boot CPU is online, just create kworker for boot > CPU pool. > > Signed-off-by: Zqiang <qiang1.zhang@intel.com> > --- > kernel/workqueue.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > index abcc9a2ac319..3948babe02d5 100644 > --- a/kernel/workqueue.c > +++ b/kernel/workqueue.c > @@ -6120,11 +6120,9 @@ void __init workqueue_init(void) > mutex_unlock(&wq_pool_mutex); > > /* create the initial workers */ > - for_each_online_cpu(cpu) { > - for_each_cpu_worker_pool(pool, cpu) { > - pool->flags &= ~POOL_DISASSOCIATED; > - BUG_ON(!create_worker(pool)); > - } > + for_each_cpu_worker_pool(pool, smp_processor_id()) { > + pool->flags &= ~POOL_DISASSOCIATED; > + BUG_ON(!create_worker(pool));
I mean, I guess this would work but what's the benefit? It doesn't make any practical difference and the code is now more fragile to external changes.
Thanks.
-- tejun
| |