[PATCH] linux-2.6.3_time-interpolator-fix_A0

From: john stultz <johnstul_at_us.ibm.com>
Date: 2004-02-24 06:44:29
[Resending to Andrew and LKML]

All,
	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.

Please consider for inclusion.


diff -Nru a/kernel/timer.c b/kernel/timer.c
--- a/kernel/timer.c	Wed Feb 18 12:04:03 2004
+++ b/kernel/timer.c	Wed Feb 18 12:04:03 2004
@@ -677,7 +677,6 @@
 	if (xtime.tv_nsec >= 1000000000) {
 	    xtime.tv_nsec -= 1000000000;
 	    xtime.tv_sec++;
-	    time_interpolator_update(NSEC_PER_SEC);
 	    second_overflow();
 	}
 }


-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Mon Feb 23 14:51:27 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:22 EST