Re: [locking/ww_mutex] 2a0c112828 WARNING: CPU: 0 PID: 18 at kernel/locking/mutex.c:305 __ww_mutex_wakeup_for_backoff

From: Fengguang Wu
Date: Wed Mar 01 2017 - 12:42:40 EST


On Wed, Mar 01, 2017 at 05:54:06PM +0100, Peter Zijlstra wrote:
On Wed, Mar 01, 2017 at 04:26:48PM +0000, Chris Wilson wrote:
On Wed, Mar 01, 2017 at 04:11:48PM +0000, Chris Wilson wrote:
> On Wed, Mar 01, 2017 at 04:54:14PM +0100, Peter Zijlstra wrote:
> > On Wed, Mar 01, 2017 at 11:40:43PM +0800, Fengguang Wu wrote:
> > > Thanks for the patch! I applied the patch on top of "locking/ww_mutex:
> > > Add kselftests for ww_mutex stress", and find no "bad unlock balance
> > > detected" but this warning. Attached is the new dmesg which is a bit
> > > large due to lots of repeated errors.
> >
> > So with all the various patches it works for me.
> >
> > I also have the following on top; which I did when I was looking through
> > this code trying to figure out wth was happening.
> >
> > Chris, does this make sense to you?
> >
> > It makes each loop a fully new 'instance', otherwise we'll never update
> > the ww_class->stamp and the threads will aways have the same order.
>
> Sounds ok, I just thought the stamp order of the threads was
> immaterial - with each test doing a different sequence of locks and each
> being identical in behaviour, it would not matter which had priority,
> there would have be some shuffling no matter waht. However, for the
> purpose of testing, having each iteration be a new locking instance does
> make it behaviour more like a typical user.

Correcting myself, the workers didn't reorder the locks, so changing the
stamp does make the test more interesting.

OK, so I'll go write a Changelog for it then ;-) And stick your ACK on.

With both patches in this thread, all 110 boots are successful w/o a
single warning.

Tested-by: Fengguang Wu <fengguang.wu@xxxxxxxxx>

Thanks,
Fengguang