Damn, sorry for noise, forgot to mention... On 02/12, Raghavendra K T wrote: > > +static inline void __ticket_check_and_clear_slowpath(arch_spinlock_t *lock, > + __ticket_t head) > +{ > + if (head & TICKET_SLOWPATH_FLAG) { > + arch_spinlock_t old, new; > + > + old.tickets.head = head; > + new.tickets.head = head & ~TICKET_SLOWPATH_FLAG; > + old.tickets.tail = new.tickets.head + TICKET_LOCK_INC; > + new.tickets.tail = old.tickets.tail; > + > + /* try to clear slowpath flag when there are no contenders */ > + cmpxchg(&lock->head_tail, old.head_tail, new.head_tail); > + } > +} ... > +clear_slowpath: > + if (TICKET_SLOWPATH_FLAG) > + __ticket_check_and_clear_slowpath(lock, inc.head); I think you can remove this "if (TICKET_SLOWPATH_FLAG)" check. If it is defined as zero, gcc should optimize out the code under "if (head & 0)". But this is purely cosmetic and subjective, feel free to ignore. Oleg. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization