| Date | Mon, 17 Oct 2016 19:21:28 -0400 | From | Waiman Long <> | Subject | Re: [PATCH -v4 8/8] locking/mutex: Enable optimistic spinning of woken waiter |
| |
On 10/07/2016 10:52 AM, Peter Zijlstra wrote: > @@ -600,7 +630,7 @@ __mutex_lock_common(struct mutex *lock, > mutex_acquire_nest(&lock->dep_map, subclass, 0, nest_lock, ip); > > if (__mutex_trylock(lock, false) || > - mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx)) { > + mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx, false)) { > /* got the lock, yay! */ > lock_acquired(&lock->dep_map, ip); > if (use_ww_ctx) > @@ -669,7 +699,8 @@ __mutex_lock_common(struct mutex *lock, > * state back to RUNNING and fall through the next schedule(), > * or we must see its unlock and acquire. > */ > - if (__mutex_trylock(lock, first)) > + if ((first&& mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx, true)) || > + __mutex_trylock(lock, first))
Do we need a __mutex_trylock() here? mutex_optimistic_spin() will do the trylock and we have one at the top of the loop.
Cheers, Longman
|