Re: softlockups in multi_cpu_stop

Jason Low
2015-03-07T06:45:48Z

On Fri, 2015-03-06 at 20:44 -0800, Davidlohr Bueso wrote:
> On Fri, 2015-03-06 at 20:31 -0800, Jason Low wrote:
> > On Fri, 2015-03-06 at 13:12 -0800, Jason Low wrote:
> >
> > Just in case, here's the updated patch which addresses Linus's comments
> > and with a changelog.
> >
> > Note: The changelog says that it fixes (locking/rwsem: Avoid deceiving
> > lock spinners), though I still haven't seen full confirmation that it
> > addresses all of the lockup reports.
> >
> > ------
> > Subject: [PATCH] rwsem: Avoid spinning when owner is not running
> >
> > Fixes tip commmit b3fd4f03ca0b (locking/rwsem: Avoid deceiving lock spinners).
> >
> > When doing optimistic spinning in rwsem, threads should stop spinning when
> > the lock owner is not running. While a thread is spinning on owner, if
> > the owner reschedules, owner->on_cpu returns false and we stop spinning.
> >
> > However, commit b3fd4f03ca0b essentially caused the check to get ignored
> > because when we break out of the spin loop due to !on_cpu, we continue
> > spinning if sem->owner != NULL.
>
> I would mention the actual effects of the bug, either just a "lockup"
> and/or a fragment of the trace.

Right, we should mention about the lockup in the changelog.

> > Cc: Ming Lei <ming.lei@canonical.com>
> > Cc: Davidlohr Bueso <dave@stgolabs.net>
>
> Acked-by: Davidlohr Bueso <dave@stgolabs.net>

Thanks!