On 07/19/24 at 12:38pm, Uros Bizjak wrote: > Use atomic_try_cmpxchg_acquire(*ptr, &old, new) instead of > atomic_cmpxchg_acquire(*ptr, old, new) == old in kexec_trylock(). > x86 CMPXCHG instruction returns success in ZF flag, so > this change saves a compare after cmpxchg. Seems it can simplify code even though on non-x86 arch, should we replace atomic_try_cmpxchg_acquire() with atomic_try_cmpxchg_acquire() in all similar places? For this one, Acked-by: Baoquan He <bhe@xxxxxxxxxx> > > Signed-off-by: Uros Bizjak <ubizjak@xxxxxxxxx> > Cc: Eric Biederman <ebiederm@xxxxxxxxxxxx> > --- > kernel/kexec_internal.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/kexec_internal.h b/kernel/kexec_internal.h > index 2595defe8c0d..d35d9792402d 100644 > --- a/kernel/kexec_internal.h > +++ b/kernel/kexec_internal.h > @@ -23,7 +23,8 @@ int kimage_is_destination_range(struct kimage *image, > extern atomic_t __kexec_lock; > static inline bool kexec_trylock(void) > { > - return atomic_cmpxchg_acquire(&__kexec_lock, 0, 1) == 0; > + int old = 0; > + return atomic_try_cmpxchg_acquire(&__kexec_lock, &old, 1); > } > static inline void kexec_unlock(void) > { > -- > 2.42.0 > > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec