Re: Query regarding synchronize_sched_expedited and resched_cpu

From: Peter Zijlstra
Date: Thu Sep 21 2017 - 09:58:03 EST


On Mon, Sep 18, 2017 at 09:55:27AM -0700, Paul E. McKenney wrote:
> On Mon, Sep 18, 2017 at 12:29:31PM -0400, Steven Rostedt wrote:
> > On Mon, 18 Sep 2017 09:24:12 -0700
> > "Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> >
> >
> > > As soon as I work through the backlog of lockdep complaints that
> > > appeared in the last merge window... :-(
> > >
> > > sparse_irq_lock, I am looking at you!!! ;-)

That one is a false positive and I have send patches to address.

> > I just hit one too, and decided to write a patch to show a chain of 3
> > when applicable.
> >
> > For example:
> >
> > Chain exists of:
> > cpu_hotplug_lock.rw_sem --> smpboot_threads_lock --> (complete)&self->parked
> >
> > Possible unsafe locking scenario by crosslock:
> >
> > CPU0 CPU1 CPU2
> > ---- ---- ----
> > lock(smpboot_threads_lock);
> > lock((complete)&self->parked);
> > lock(cpu_hotplug_lock.rw_sem);
> > lock(smpboot_threads_lock);
> > lock(cpu_hotplug_lock.rw_sem);
> > unlock((complete)&self->parked);
> >
> > *** DEADLOCK ***
> >
> > :-)
>
> Nice!!!

That one looks like the watchdog thing, and Thomas was poking at that.