Messages in this thread | | | Date | Tue, 23 Apr 2019 13:19:55 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH] Documentation: atomic_t.txt: Explain ordering provided by smp_mb__{before,after}_atomic() |
| |
On Tue, Apr 23, 2019 at 03:40:03PM +0200, Peter Zijlstra wrote: > On Tue, Apr 23, 2019 at 06:30:10AM -0700, Paul E. McKenney wrote: > > There are a great many that look like this: > > > > smp_mb__before_atomic(); > > clear_bit(NFSD4_CLIENT_UPCALL_LOCK, &clp->cl_flags); > > smp_mb__after_atomic(); > > Ooh, marvel at the comment describing the ordering there. Oh wait :-( > So much for checkpatch.pl I suppose.
Especially if the code was in the kernel before checkpatch.pl started asking for comments. Which might or might not be the case with this code. No idea either way.
> I think the first is a release order for the 'LOCK' bit and the second > is because of wake_up_bit() being a shitty interface. > > So maybe that should've been: > > clear_bit_unlock(NFSD4_CLIENT_UPCALL_LOCK, &clp->cl_flags); > smp_mb__after_atomic(); > wake_up_bit(&clp->cl_flags, NFSD4_CLIENT_UPCALL_LOCK); > > instead?
Quite possibly, but my brain is too fried to be sure.
Thanx, Paul
| |