Re: [PATCH v2] wireguard: queueing: simplify wg_cpumask_next_online()

"Jason A. Donenfeld" <[email protected]>
Newsgroups com.zx2c4.lists.wireguard,org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Message-ID <CAHmME9qLiyWEhU6DrK+QWu5wo7Hmq-YjftmqGagCmEp3bjy4DQ@mail.gmail.com>
On Mon, Jun 30, 2025 at 8:15 PM Yury Norov <[email protected]> wrote:
>
> > > > From fbdce972342437fb12703cae0c3a4f8f9e218a1b Mon Sep 17 00:00:00 2001
> > > > From: Yury Norov (NVIDIA) <[email protected]>
> > > > Date: Mon, 30 Jun 2025 13:47:49 -0400
> > > > Subject: [PATCH] workqueue: relax condition in __queue_work()
> > > >
> > > > Some cpumask search functions may return a number greater than
> > > > nr_cpu_ids when nothing is found. Adjust __queue_work() to it.
> > > >
> > > > Signed-off-by: Yury Norov (NVIDIA) <[email protected]>
> > > > ---
> > > >  kernel/workqueue.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c
> > > > index 9f9148075828..abacfe157fe6 100644
> > > > --- a/kernel/workqueue.c
> > > > +++ b/kernel/workqueue.c
> > > > @@ -2261,7 +2261,7 @@ static void __queue_work(int cpu, struct workqueue_struct *wq,
> > > >         rcu_read_lock();
> > > >  retry:
> > > >         /* pwq which will be used unless @work is executing elsewhere */
> > > > -       if (req_cpu == WORK_CPU_UNBOUND) {
> > > > +       if (req_cpu >= WORK_CPU_UNBOUND) {
> > > >                 if (wq->flags & WQ_UNBOUND)
> > > >                         cpu = wq_select_unbound_cpu(raw_smp_processor_id());
> > > >                 else
> > > >
> > >
> > > Seems reasonable to me... Maybe submit this to Tejun and CC me?
> >
> > Sure, no problem.
>
> Hmm... So, actually WORK_CPU_UNBOUND is NR_CPUS, which is not the same
> as nr_cpu_ids. For example, on my Ubuntu machine, the CONFIG_NR_CPUS
> is 8192, and nr_cpu_ids is 8.
>
> So, for the wg_cpumask_next_online() to work properly, we need to
> return the WORK_CPU_UNBOUND in case of nothing is found.

Or just try again? Could just make your if into a while.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.