[PATCH] sched/rt: Use atomic_try_cmpxchg_acquire() in rto_start_trylock()
From: David Carlier
Date: Wed Apr 15 2026 - 08:43:15 EST
Replace this pattern in rto_start_trylock():
!atomic_cmpxchg_acquire(*ptr, 0, new)
... with the simpler and faster:
atomic_try_cmpxchg_acquire(*ptr, &zero, new)
The x86 CMPXCHG instruction returns success in the ZF flag, so
atomic_try_cmpxchg_acquire() saves a compare after the CMPXCHG.
No functional change intended.
Signed-off-by: David Carlier <devnexen@xxxxxxxxx>
---
kernel/sched/rt.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 4ee8faf01441..13ac94899c18 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -2172,7 +2172,8 @@ static int rto_next_cpu(struct root_domain *rd)
static inline bool rto_start_trylock(atomic_t *v)
{
- return !atomic_cmpxchg_acquire(v, 0, 1);
+ int zero = 0;
+ return atomic_try_cmpxchg_acquire(v, &zero, 1);
}
static inline void rto_start_unlock(atomic_t *v)
--
2.53.0