On Thu, 2022-07-28 at 16:31 +1000, Nicholas Piggin wrote: <snip> > -#define queued_spin_lock queued_spin_lock > > -static inline void queued_spin_unlock(struct qspinlock *lock) > +static __always_inline int queued_spin_trylock(struct qspinlock *lock) > { > - if (!IS_ENABLED(CONFIG_PARAVIRT_SPINLOCKS) || !is_shared_processor()) > - smp_store_release(&lock->locked, 0); > - else > - __pv_queued_spin_unlock(lock); > + if (atomic_cmpxchg_acquire(&lock->val, 0, 1) == 0) > + return 1; > + return 0;
optional style nit: return (atomic_cmpxchg_acquire(&lock->val, 0, 1) == 0);