All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()
@ 2020-04-17 14:50 Alex Shi
  2020-04-17 14:50 ` [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs Alex Shi
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Alex Shi @ 2020-04-17 14:50 UTC (permalink / raw)
  Cc: Alex Shi, Thomas Gleixner, Davidlohr Bueso, Ingo Molnar,
	Will Deacon, linux-kernel

This macro isn't interested by anyone, so remove it.

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 | 2 --
 1 file changed, 2 deletions(-)

diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index c9f090d64f00..cfdd5b93264d 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -141,7 +141,6 @@ 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)
 
@@ -202,7 +201,6 @@ static inline bool unlock_rt_mutex_safe(struct rt_mutex *lock,
 }
 
 #else
-# define rt_mutex_cmpxchg_relaxed(l,c,n)	(0)
 # define rt_mutex_cmpxchg_acquire(l,c,n)	(0)
 # define rt_mutex_cmpxchg_release(l,c,n)	(0)
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs
  2020-04-17 14:50 [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
@ 2020-04-17 14:50 ` Alex Shi
  2020-04-26 16:31   ` Thomas Gleixner
  2020-04-26 12:05 ` [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Alex Shi @ 2020-04-17 14:50 UTC (permalink / raw)
  Cc: Alex Shi, Thomas Gleixner, Davidlohr Bueso, Ingo Molnar,
	Will Deacon, linux-kernel

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 cfdd5b93264d..232727a4a220 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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()
  2020-04-17 14:50 [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
  2020-04-17 14:50 ` [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs Alex Shi
@ 2020-04-26 12:05 ` Alex Shi
  2020-04-26 20:04 ` [tip: locking/core] " tip-bot2 for Alex Shi
  2020-04-27 10:45 ` tip-bot2 for Alex Shi
  3 siblings, 0 replies; 6+ messages in thread
From: Alex Shi @ 2020-04-26 12:05 UTC (permalink / raw)
  To: Thomas Gleixner, Davidlohr Bueso; +Cc: Ingo Molnar, Will Deacon, linux-kernel

This 2 small patches may missed for a few time.

Is it ok to be merged?

Thanks
Alex

在 2020/4/17 下午10:50, Alex Shi 写道:
> This macro isn't interested by anyone, so remove it.
> 
> 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 | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
> index c9f090d64f00..cfdd5b93264d 100644
> --- a/kernel/locking/rtmutex.c
> +++ b/kernel/locking/rtmutex.c
> @@ -141,7 +141,6 @@ 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)
>  
> @@ -202,7 +201,6 @@ static inline bool unlock_rt_mutex_safe(struct rt_mutex *lock,
>  }
>  
>  #else
> -# define rt_mutex_cmpxchg_relaxed(l,c,n)	(0)
>  # define rt_mutex_cmpxchg_acquire(l,c,n)	(0)
>  # define rt_mutex_cmpxchg_release(l,c,n)	(0)
>  
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs
  2020-04-17 14:50 ` [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs Alex Shi
@ 2020-04-26 16:31   ` Thomas Gleixner
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Gleixner @ 2020-04-26 16:31 UTC (permalink / raw)
  To: Alex Shi
  Cc: Davidlohr Bueso, Ingo Molnar, Will Deacon, linux-kernel, Peter Zijlstra

Alex Shi <alex.shi@linux.alibaba.com> writes:

> Checking l->owner first to skip time cost cmpxchgs.

I don't see what that buys.

It actually adds an extra conditional in the non-contended case, which
is the case we are optimizing for.

In the contended case, i.e. when l->owner != c the cmpxchg cost is
completely irrelevant compared to the slowpath costs.

>  #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)

This kind of micro-optimizing is more than dubious especially w/o
numbers backing up the benefit.

Thanks,

        tglx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip: locking/core] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()
  2020-04-17 14:50 [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
  2020-04-17 14:50 ` [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs Alex Shi
  2020-04-26 12:05 ` [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
@ 2020-04-26 20:04 ` tip-bot2 for Alex Shi
  2020-04-27 10:45 ` tip-bot2 for Alex Shi
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot2 for Alex Shi @ 2020-04-26 20:04 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Alex Shi, Thomas Gleixner, x86, LKML

The following commit has been merged into the locking/core branch of tip:

Commit-ID:     2f879e9f05f7806d0885b57532831176204e411f
Gitweb:        https://git.kernel.org/tip/2f879e9f05f7806d0885b57532831176204e411f
Author:        Alex Shi <alex.shi@linux.alibaba.com>
AuthorDate:    Fri, 17 Apr 2020 22:50:31 +08:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sun, 26 Apr 2020 21:58:42 +02:00

locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()

Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/1587135032-188866-1-git-send-email-alex.shi@linux.alibaba.com

---
 kernel/locking/rtmutex.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 851bbb1..7ad22ea 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -141,7 +141,6 @@ 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)
 
@@ -202,7 +201,6 @@ static inline bool unlock_rt_mutex_safe(struct rt_mutex *lock,
 }
 
 #else
-# define rt_mutex_cmpxchg_relaxed(l,c,n)	(0)
 # define rt_mutex_cmpxchg_acquire(l,c,n)	(0)
 # define rt_mutex_cmpxchg_release(l,c,n)	(0)
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip: locking/core] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()
  2020-04-17 14:50 [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
                   ` (2 preceding siblings ...)
  2020-04-26 20:04 ` [tip: locking/core] " tip-bot2 for Alex Shi
@ 2020-04-27 10:45 ` tip-bot2 for Alex Shi
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot2 for Alex Shi @ 2020-04-27 10:45 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Alex Shi, Thomas Gleixner, x86, LKML

The following commit has been merged into the locking/core branch of tip:

Commit-ID:     23b5ae2e8e1326c91b5dfdbb6ebcd5a6820074ae
Gitweb:        https://git.kernel.org/tip/23b5ae2e8e1326c91b5dfdbb6ebcd5a6820074ae
Author:        Alex Shi <alex.shi@linux.alibaba.com>
AuthorDate:    Fri, 17 Apr 2020 22:50:31 +08:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Mon, 27 Apr 2020 12:26:40 +02:00

locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed()

Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/1587135032-188866-1-git-send-email-alex.shi@linux.alibaba.com

---
 kernel/locking/rtmutex.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index c9f090d..cfdd5b9 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -141,7 +141,6 @@ 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)
 
@@ -202,7 +201,6 @@ static inline bool unlock_rt_mutex_safe(struct rt_mutex *lock,
 }
 
 #else
-# define rt_mutex_cmpxchg_relaxed(l,c,n)	(0)
 # define rt_mutex_cmpxchg_acquire(l,c,n)	(0)
 # define rt_mutex_cmpxchg_release(l,c,n)	(0)
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-04-27 10:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-17 14:50 [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
2020-04-17 14:50 ` [PATCH 2/2] locking/rtmutex: optimize rt_mutex_cmpxchgs Alex Shi
2020-04-26 16:31   ` Thomas Gleixner
2020-04-26 12:05 ` [PATCH 1/2] locking/rtmutex: Remove unused rt_mutex_cmpxchg_relaxed() Alex Shi
2020-04-26 20:04 ` [tip: locking/core] " tip-bot2 for Alex Shi
2020-04-27 10:45 ` tip-bot2 for Alex Shi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.