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

From: Eric Biggers
Date: Tue Jul 23 2019 - 12:31:31 EST


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.

- Eric