Messages in this thread | | | Date | Thu, 12 Nov 2015 16:08:22 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 4/4] locking: Introduce smp_cond_acquire() |
| |
On Thu, Nov 12, 2015 at 07:01:49AM -0800, Paul E. McKenney wrote: > On Thu, Nov 12, 2015 at 03:50:13PM +0100, Peter Zijlstra wrote: > > On Thu, Nov 12, 2015 at 06:40:04AM -0800, Paul E. McKenney wrote: > > > I cannot resist suggesting that any lock that interacts with > > > spin_unlock_wait() must have all relevant acquisitions followed by > > > smp_mb__after_unlock_lock(). > > > > Ha! that would certainly help here. But it would mean that argh64v8 also > > needs to define that, even though that is already RCsc. > > Maybe. It could also be that arm64 avoids the need somehow, for example > via their RCsc behavior. Their memory model is similar to PPC, but not > exactly the same. > > Will?
So when I spoke to Will earlier today, we agreed that LDAXR+STXR is susceptible to the same problem. The STXR will allow loads to pass up over that store.
On v8.1, which is using LDADDA, this is not an issue, for as the ACQUIRE is part of the LOAD, the Read-Modify-Write is indivisible as a whole, and therefore a subsequent load has nothing to pass over.
| |