On Fri, Mar 29, 2019 at 01:52:33PM -0700, H. Peter Anvin wrote: > On 3/29/19 8:54 AM, Alexander Potapenko wrote: > > > >> Of course, this would force the compiler to actually compute the > >> offset, which would slow things down. I have no idea whether this > >> would be better or worse than just using the "memory" clobber. > > Just adding the "memory" clobber to clear_bit() changes sizes of 5 > > kernel functions (the three mentioned above, plus hub_activate() and > > native_send_call_func_ipi()) by a small margin. > > This probably means the performance impact of this clobber is > > negligible in this case. > > I would agree with that. > > Could you perhaps verify whether or not any of the above functions > contains a currently manifest bug? > > Note: the atomic versions of these functions obviously need to have > "volatile" and the clobber anyway, as they are by definition barriers > and moving memory operations around them would be a very serious error.
The atomic functions that return void don't need to order anything except the input and output arguments. The oddness with clear_bit() is that the memory changed isn't necessarily the quantity referenced by the argument, if the number of bits specified is large. So (for example) atomic_inc() does not need a "memory" clobber, right? Thanx, Paul