On Sat, 2010-04-17 at 21:49 +0300, Avi Kivity wrote: > On 04/17/2010 09:48 PM, Avi Kivity wrote: > > > >> > >> +static u64 last_value = 0; > > > > Needs to be atomic64_t. > > > >> + > >> cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) > >> { > >> struct pvclock_shadow_time shadow; > >> unsigned version; > >> cycle_t ret, offset; > >> + u64 last; > >> > >> > >> + do { > >> + last = last_value; > > > > Otherwise, this assignment can see a partial update. > > On a 32-bit guest, that is. Right, do bear in mind that the x86 implementation of atomic64_read() is terrifyingly expensive, it is better to not do that read and simply use the result of the cmpxchg. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html