Re: linux-next boot error: WARNING: workqueue cpumask: online intersect > possible intersect

From: Eric Biggers
Date: Wed Jul 24 2019 - 13:41:34 EST


On Tue, Jul 23, 2019 at 09:31:27AM -0700, Eric Biggers wrote:
> On Tue, Jul 23, 2019 at 10:16:24AM +0200, 'Dmitry Vyukov' via syzkaller-bugs wrote:
> > On Tue, Jun 11, 2019 at 8:52 PM Tejun Heo <tj@xxxxxxxxxx> wrote:
> > >
> > > Hello,
> > >
> > > On Fri, Jun 07, 2019 at 10:45:45AM +0200, Dmitry Vyukov wrote:
> > > > +workqueue maintainers and Michael who added this WARNING
> > > >
> > > > The WARNING was added in 2017, so I guess it's a change somewhere else
> > > > that triggered it.
> > > > The WARNING message does not seem to give enough info about the caller
> > > > (should it be changed to WARN_ONCE to print a stack?). How can be root
> > > > cause this and unbreak linux-next?
> > >
> > > So, during boot, workqueue builds masks of possible cpus of each node
> > > and stores them on wq_numa_possible_cpumask[] array. The warning is
> > > saying that somehow online cpumask of a node became a superset of the
> > > possible mask, which should never happen.
> > >
> > > Dumping all masks in wq_numa_possible_cpumasks[] and cpumask_of_node()
> > > of each node should show what's going on.
> >
> > This has reached upstream and all subsystem subtrees, now all Linux
> > trees are boot broken (except for few that still lack behind):
> > https://syzkaller.appspot.com/upstream
> >
> > No new Linux code is tested by syzbot at this point.
> >
>
> AFAICS, what's actually happening is that the boot fails due to a different bug,
> "general protection fault in dma_direct_max_mapping_size" -- which is a real
> boot error, not just a warning; see
> https://lkml.kernel.org/lkml/20190723161425.GA23641@xxxxxxxxx/
>
> syzbot then sees "WARNING: workqueue cpumask: online intersect > possible
> intersect" in the console output prior to that, and uses that as the bug title.
>
> It's not obvious that syzbot would report "WARNING: workqueue cpumask: online
> intersect > possible intersect" without the real boot error too.
>
> Nevertheless the issue is still there and something needs to be done about it.
>

The real boot error "general protection fault in dma_direct_max_mapping_size" is
fixed in mainline now. I believe that unblocks syzbot testing, since it doesn't
appear to have been blocked by "WARNING: workqueue cpumask: online intersect >
possible intersect" by itself.

Anyway: Tejun and Michael, any other ideas for why "WARNING: workqueue cpumask:
online intersect > possible intersect" is still happening?

- Eric