Messages in this thread | | | Subject | Re: [PATCH-queue/locking/core] locking/mutex: Unify yield_to_waiter & waiter_spinning | From | Jason Low <> | Date | Thu, 18 Aug 2016 18:28:49 -0700 |
| |
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 <Waiman.Long@hpe.com> > --- > 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 <jason.low2@hpe.com>
| |