Commit 40aaa9b3 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] time interpolator fix

From: john stultz <johnstul@us.ibm.com>

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.
parent 688466a4
...@@ -677,7 +677,6 @@ static void update_wall_time(unsigned long ticks) ...@@ -677,7 +677,6 @@ static void update_wall_time(unsigned long ticks)
if (xtime.tv_nsec >= 1000000000) { if (xtime.tv_nsec >= 1000000000) {
xtime.tv_nsec -= 1000000000; xtime.tv_nsec -= 1000000000;
xtime.tv_sec++; xtime.tv_sec++;
time_interpolator_update(NSEC_PER_SEC);
second_overflow(); second_overflow();
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment