On Fri, Aug 28, 2020 at 03:07:08AM +0200, Ahmed S. Darwish wrote: > #define __read_seqcount_begin(s) \ > +({ \ > + unsigned seq; \ > + \ > + do { \ > + seq = __seqcount_sequence(s); \ > + if (likely(! (seq & 1))) \ > + break; \ > + cpu_relax(); \ > + } while (true); \ > + \ > + kcsan_atomic_next(KCSAN_SEQLOCK_REGION_MAX); \ > + seq; \ > +})
Since we're there anyway, does it make sense to (re)write this like: while ((seq = __seqcount_sequence(s)) & 1) cpu_relax(); ?