Messages in this thread Patch in this message |  | | From | Alex Shi <> | Subject | [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs | Date | Fri, 14 Feb 2020 23:17:19 +0800 |
| |
Checking l->owner first to skip time cost cmpxchgs.
Suggested-by: Davidlohr Bueso <dave@stgolabs.net> 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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c index 7ad22eade1cc..e8df466af8ab 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -141,8 +141,10 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) * set up. */ #ifndef CONFIG_DEBUG_RT_MUTEXES -# 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) /* * Callers must hold the ->wait_lock -- which is the whole purpose as we force -- 1.8.3.1
|  |