From: john stultz In developing the ia64-cyclone patch, which implements a cyclone based time interpolator, I found the following bug which could cause time inconsistencies. In update_wall_time_one_tick(), which is called each timer interrupt, we call time_interpolator_update(delta_nsec) where delta_nsec is approximately NSEC_PER_SEC/HZ. This directly correlates with the changes to xtime which occurs in update_wall_time_one_tick(). However in update_wall_time(), on a second overflow, we again call time_interpolator_update(NSEC_PER_SEC). However while the components of xtime are being changed, the overall value of xtime does not (nsec is decremented NSEC_PER_SEC and sec is incremented). Thus this call to time_interpolator_update is incorrect. This patch removes the incorrect call to time_interpolator_update and was found to resolve the time inconsistencies I had seen while developing the ia64-cyclone patch. --- kernel/timer.c | 1 - 1 files changed, 1 deletion(-) diff -puN kernel/timer.c~time-interpolator-fix kernel/timer.c --- 25/kernel/timer.c~time-interpolator-fix 2004-02-23 12:10:08.000000000 -0800 +++ 25-akpm/kernel/timer.c 2004-02-23 12:10:08.000000000 -0800 @@ -677,7 +677,6 @@ static void update_wall_time(unsigned lo if (xtime.tv_nsec >= 1000000000) { xtime.tv_nsec -= 1000000000; xtime.tv_sec++; - time_interpolator_update(NSEC_PER_SEC); second_overflow(); } } _