Messages in this thread | | | Subject | Re: [PATCH 1/5] Add a global synchronization point for pvclock | From | Peter Zijlstra <> | Date | Mon, 19 Apr 2010 16:46:51 +0200 |
| |
On Mon, 2010-04-19 at 17:33 +0300, Avi Kivity wrote: > On 04/19/2010 05:21 PM, Glauber Costa wrote: > > > >> Oh yes, just trying to avoid a patch with both atomic64_read() and > >> ACCESS_ONCE(). > >> > > you're mixing the private version of the patch you saw with this one. > > there isn't any atomic reads in here. I'll use a barrier then > > > > This patch writes last_value atomically, but reads it non-atomically. A > barrier is insufficient.
What avi says! :-)
On a 32bit machine a 64bit read are two 32bit reads, so
last = last_value;
becomes:
last.high = last_value.high; last.low = last_vlue.low;
(or the reverse of course)
Now imagine a write getting interleaved with that ;-)
| |