Messages in this thread | | | Date | Fri, 21 Feb 2014 18:01:29 -0500 | From | Peter Hurley <> | Subject | Re: [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK |
| |
On 02/21/2014 11:57 AM, Tejun Heo wrote: > Yo, > > On Fri, Feb 21, 2014 at 11:53:46AM -0500, Peter Hurley wrote: >> Ok, I can do that. But AFAIK it'll have to be an smp_rmb(); there is >> no mb__after unlock. > > We do have smp_mb__after_unlock_lock(). > >> [ After thinking about it some, I don't think preventing speculative >> writes before clearing PENDING if useful or necessary, so that's >> why I'm suggesting only the rmb. ] > > But smp_mb__after_unlock_lock() would be cheaper on most popular > archs, I think.
smp_mb__after_unlock_lock() is only for ordering memory operations between two spin-locked sections on either the same lock or by the same task/cpu. Like:
i = 1 spin_unlock(lock1) spin_lock(lock2) smp_mb__after_unlock_lock() j = 1
This guarantees that the store to j happens after the store to i. Without it, a cpu can
spin_lock(lock2) j = 1 i = 1 spin_unlock(lock1)
Regards, Peter Hurley
| |