From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754899AbcHSBd3 (ORCPT ); Thu, 18 Aug 2016 21:33:29 -0400 Received: from g2t4620.austin.hp.com ([15.73.212.81]:37124 "EHLO g2t4620.austin.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754198AbcHSBdX (ORCPT ); Thu, 18 Aug 2016 21:33:23 -0400 Message-ID: <1471570129.4991.48.camel@j-VirtualBox> Subject: Re: [PATCH-queue/locking/core] locking/mutex: Unify yield_to_waiter & waiter_spinning From: Jason Low To: Waiman Long Cc: jason.low2@hpe.com, Peter Zijlstra , Ingo Molnar , linux-kernel@vger.kernel.org, Linus Torvalds , Ding Tianhong , Davidlohr Bueso , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Imre Deak , jason.low2@hp.com Date: Thu, 18 Aug 2016 18:28:49 -0700 In-Reply-To: <1471569328-41611-1-git-send-email-Waiman.Long@hpe.com> References: <1471569328-41611-1-git-send-email-Waiman.Long@hpe.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2016-08-18 at 21:15 -0400, Waiman Long wrote: > Both waiter_spinning and yield_to_waiter are used for somewhat similar > purpose. The waiter_spinning flag is used in CONFIG_MUTEX_SPIN_ON_OWNER > to make optimistic spinner yield to spinning waiter; whereas the > yield_to_waiter is used in !CONFIG_MUTEX_SPIN_ON_OWNER to make new > incoming mutex locker to yield to the sleeping waiter. > > This patch unifies these 2 flags into a single yield_to_waiter > flag that is used in both CONFIG_MUTEX_SPIN_ON_OWNER and > !CONFIG_MUTEX_SPIN_ON_OWNER codes. > > Signed-off-by: Waiman Long > --- > include/linux/mutex.h | 8 ++++++-- > kernel/locking/mutex.c | 12 ++++++------ > 2 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/include/linux/mutex.h b/include/linux/mutex.h > index 988c020..2b3dcdb 100644 > --- a/include/linux/mutex.h > +++ b/include/linux/mutex.h > @@ -57,8 +57,12 @@ struct mutex { > #endif > #ifdef CONFIG_MUTEX_SPIN_ON_OWNER > struct optimistic_spin_queue osq; /* Spinner MCS lock */ > - int waiter_spinning; > -#elif defined(CONFIG_SMP) > +#endif > +#ifdef CONFIG_SMP > + /* > + * Used by both CONFIG_MUTEX_SPIN_ON_OWNER (depends on CONFIG_SMP) & > + * !CONFIG_MUTEX_SPIN_ON_OWNER codes. > + */ > int yield_to_waiter; > #endif > #ifdef CONFIG_DEBUG_MUTEXES > diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c > index c4261fa..7218835 100644 > --- a/kernel/locking/mutex.c > +++ b/kernel/locking/mutex.c > @@ -55,8 +55,8 @@ __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key) > mutex_clear_owner(lock); > #ifdef CONFIG_MUTEX_SPIN_ON_OWNER > osq_lock_init(&lock->osq); > - lock->waiter_spinning = false; > -#elif defined(CONFIG_SMP) > +#endif > +#ifdef CONFIG_SMP > lock->yield_to_waiter = false; > #endif > > @@ -351,7 +351,7 @@ static bool mutex_optimistic_spin(struct mutex *lock, > * Turn on the waiter spinning flag to discourage the spinner > * from getting the lock. Might want to update this comment to "Turn on the yield to waiter flag to discourage optimistic spinners from stealing the lock." Besides that: Acked-by: Jason Low