[PATCH] time-offset patch
authorDavid Mosberger <davidm@napali.hpl.hp.com>
Fri, 31 May 2002 04:13:19 +0000 (21:13 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Fri, 31 May 2002 04:13:19 +0000 (21:13 -0700)
commit9d64273c4f865c0a1cd76a3450a3d2bba8262e66
tree0286e16c76d2d5bd11e830069447bbad3e031b3c
parent5d29ce55d5707974efe74a9894b739bc374275d5
[PATCH] time-offset patch

On ia64 MP machines, we use the cycle counter register of each CPU to
obtain fine-grained time-stamps.  At boot-time, we synchronize the
counters as close as possible (similar to x86, though with a different
algorithm).  But even with this synchronization, there is still a
small (really: tiny) chance that a process bouncing from one CPU to
another could observe time going backwards.  To guard against this, I
maintain a global variable called "last_time_offset" which keeps track
of the largest time-interpolation value returned so far.  Most of this
is in platform-specific code (arch/ia64/kernel/time.c), but there are
a handful of places in platform-independent code where this variable
needs to be cleared to zero.  This is what the patch below does.  I
didn't put it inside CONFIG_IA64 because I think this can be useful
for other platforms, too.  I suppose I could put it inside CONFIG_SMP
though this would make the code uglier.  If you think it's OK, please
apply, otherwise, I'd appreciate your feedback.
kernel/time.c
kernel/timer.c