On Fri, 5 Sep 2014, Paolo Bonzini wrote: > Il 05/09/2014 17:14, Thomas Gleixner ha scritto: > > So that means the code is correct. Now where is the bug? > > In kernel/time/timekeeping.c? > > We know that we should have > > base_mono = wall_to_monotonic + xtime_sec > > Instead it is > > base_mono = wall_to_monotonic + xtime_sec > - seconds from boot time > > which is... zero. Given this is the only use of base_mono in a > notifier, I wonder if it is as simple as this (which I don't have time > to test right now): > > diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c > index fb4a9c2cf8d9..f6807a85b8c9 100644 > --- a/kernel/time/timekeeping.c > +++ b/kernel/time/timekeeping.c > @@ -443,9 +443,9 @@ static void timekeeping_update(struct timekeeper > *tk, unsigned int action) > ntp_clear(); > } > update_vsyscall(tk); > - update_pvclock_gtod(tk, action & TK_CLOCK_WAS_SET); > > tk_update_ktime_data(tk); > + update_pvclock_gtod(tk, action & TK_CLOCK_WAS_SET); Why are you moving the update between vsycall and pvclock update as I did in my patch? We really need to update everything before calling somewhere. And yes it is that simple. I instrumented the stuff and its correct now. Thanks tglx -- 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