]> Git Repo - linux.git/commitdiff
sched/clock: Use try_cmpxchg64 in sched_clock_{local,remote}
authorUros Bizjak <[email protected]>
Wed, 18 May 2022 18:49:53 +0000 (20:49 +0200)
committerPeter Zijlstra <[email protected]>
Thu, 19 May 2022 21:46:09 +0000 (23:46 +0200)
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 <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
kernel/sched/clock.c

index d9272d9061a3b54ba9521273904388a543e5a91b..e374c0c923daec23b6ea5db5667465ce604b2ae0 100644 (file)
@@ -287,7 +287,7 @@ again:
        clock = wrap_max(clock, min_clock);
        clock = wrap_min(clock, max_clock);
 
-       if (cmpxchg64(&scd->clock, old_clock, clock) != old_clock)
+       if (!try_cmpxchg64(&scd->clock, &old_clock, clock))
                goto again;
 
        return clock;
@@ -349,7 +349,7 @@ again:
                val = remote_clock;
        }
 
-       if (cmpxchg64(ptr, old_val, val) != old_val)
+       if (!try_cmpxchg64(ptr, &old_val, val))
                goto again;
 
        return val;
This page took 0.055891 seconds and 4 git commands to generate.