Skip to content

Commit 8491d1b

Browse files
ubizjakPeter Zijlstra
authored andcommitted
sched/clock: Use try_cmpxchg64 in sched_clock_{local,remote}
Use try_cmpxchg64 instead of cmpxchg64 (*ptr, old, new) != old in sched_clock_{local,remote}. x86 cmpxchg returns success in ZF flag, so this change saves a compare after cmpxchg (and related move instruction in front of cmpxchg). Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20220518184953.3446778-1-ubizjak@gmail.com
1 parent c2df0a6 commit 8491d1b

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

kernel/sched/clock.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ notrace static u64 sched_clock_local(struct sched_clock_data *scd)
287287
clock = wrap_max(clock, min_clock);
288288
clock = wrap_min(clock, max_clock);
289289

290-
if (cmpxchg64(&scd->clock, old_clock, clock) != old_clock)
290+
if (!try_cmpxchg64(&scd->clock, &old_clock, clock))
291291
goto again;
292292

293293
return clock;
@@ -349,7 +349,7 @@ notrace static u64 sched_clock_remote(struct sched_clock_data *scd)
349349
val = remote_clock;
350350
}
351351

352-
if (cmpxchg64(ptr, old_val, val) != old_val)
352+
if (!try_cmpxchg64(ptr, &old_val, val))
353353
goto again;
354354

355355
return val;

0 commit comments

Comments
 (0)