diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2023-09-08 18:22:49 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2023-09-20 09:31:11 +0200 |
commit | af9f006393b53409be0ca83ae234bef840cdef4a (patch) | |
tree | 7509dc170b32f89e48ad6fc980bddfe4ac540484 /kernel/locking/ww_rt_mutex.c | |
parent | 28bc55f654de49f6122c7475b01b5d5ef4bdf0d4 (diff) |
locking/rtmutex: Avoid unconditional slowpath for DEBUG_RT_MUTEXES
With DEBUG_RT_MUTEXES enabled the fast-path rt_mutex_cmpxchg_acquire()
always fails and all lock operations take the slow path.
Provide a new helper inline rt_mutex_try_acquire() which maps to
rt_mutex_cmpxchg_acquire() in the non-debug case. For the debug case
it invokes rt_mutex_slowtrylock() which can acquire a non-contended
rtmutex under full debug coverage.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230908162254.999499-3-bigeasy@linutronix.de
Diffstat (limited to 'kernel/locking/ww_rt_mutex.c')
-rw-r--r-- | kernel/locking/ww_rt_mutex.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/locking/ww_rt_mutex.c b/kernel/locking/ww_rt_mutex.c index d1473c624105..c7196de838ed 100644 --- a/kernel/locking/ww_rt_mutex.c +++ b/kernel/locking/ww_rt_mutex.c @@ -62,7 +62,7 @@ __ww_rt_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ww_ctx, } mutex_acquire_nest(&rtm->dep_map, 0, 0, nest_lock, ip); - if (likely(rt_mutex_cmpxchg_acquire(&rtm->rtmutex, NULL, current))) { + if (likely(rt_mutex_try_acquire(&rtm->rtmutex))) { if (ww_ctx) ww_mutex_set_context_fastpath(lock, ww_ctx); return 0; |