Messages in this thread |  | | Date | Wed, 12 Feb 2020 07:07:56 -0800 | From | Davidlohr Bueso <> | Subject | Re: [PATCH] locking/rtmutex: remove unused cmpxchg_relaxed |
| |
On Tue, 04 Feb 2020, Alex Shi wrote:
>Thanks Thomas and David! >Is this following patch ok?
So if anything, this really wants to be two patches.
>--- >From 4cf9e38a73c67c6894f3addb2ddca26bb51b1a28 Mon Sep 17 00:00:00 2001 >From: Alex Shi <alex.shi@linux.alibaba.com> >Date: Tue, 21 Jan 2020 15:03:33 +0800 >Subject: [PATCH v2] locking/rtmutex: optimize rt_mutex_cmpxchg_xxx series func > >rt_mutex_cmpxchg_relexed isn't interested by anyone, so remove it. >And Davidlohr Bueso suggests check l->owner before cmpxchg to reduce >lock contention. > >Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com> >Cc: Thomas Gleixner <tglx@linutronix.de> >Cc: Davidlohr Bueso <dave@stgolabs.net> >Cc: Ingo Molnar <mingo@redhat.com> >Cc: Will Deacon <will@kernel.org> >Cc: linux-kernel@vger.kernel.org >--- > kernel/locking/rtmutex.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > >diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c >index 851bbb10819d..eb26f4e57ce4 100644 >--- a/kernel/locking/rtmutex.c >+++ b/kernel/locking/rtmutex.c >@@ -141,9 +141,10 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) > * set up. > */ > #ifndef CONFIG_DEBUG_RT_MUTEXES >-# define rt_mutex_cmpxchg_relaxed(l,c,n) (cmpxchg_relaxed(&l->owner, c, n) == c) >-# define rt_mutex_cmpxchg_acquire(l,c,n) (cmpxchg_acquire(&l->owner, c, n) == c) >-# define rt_mutex_cmpxchg_release(l,c,n) (cmpxchg_release(&l->owner, c, n) == c) >+# define rt_mutex_cmpxchg_acquire(l,c,n) \ >+ (l->owner == c && cmpxchg_acquire(&l->owner, c, n) == c) >+# define rt_mutex_cmpxchg_release(l,c,n) \ >+ (l->owner == c && cmpxchg_release(&l->owner, c, n) == c)
Thomas, should I resend the top-waiter spin series? Otherwise yeah, I see little point to the CCAS fastpath thing.
Thanks, Davidlohr
|  |