On Mon, Feb 01, 2016 at 04:58:13PM +0000, Will Deacon wrote: > Hi Peter, > > On Mon, Feb 01, 2016 at 03:37:24PM +0100, Peter Zijlstra wrote: > > Given the below patch; we've now got an unconditional full global > > barrier in, does this make the MCS spinlock RCsc ? > > > > The 'problem' is that this barrier can happen before we actually acquire > > the lock. That is, if we hit arch_mcs_spin_lock_contended() _that_ will > > be the acquire barrier and we end up with a SYNC in between unlock and > > lock -- ie. not an smp_mb__after_unlock_lock() equivalent. > > In which case, I don't think the lock will be RCsc with this change; > you'd need an smp_mb__after_unlock_lock() after > arch_mcs_spin_lock_contended(...) if you wanted the thing to be RCsc.
Right, I think it works for TSO, but in general it makes my head hurt. > > This is non-critical because the MCS code isn't actually used and > > mostly serves as documentation, a stepping stone to the more complex > > things we've build on top of the idea. > > Although I wonder how useful this is as a documentation aid now that we > have the osq_lock. So the OSQ thing is horribly complex, pure MCS is a nice step-stone.

