2003-03-26 02:33:24

by john stultz

[permalink] [raw]
Subject: [RFC][PATCH] linux-2.5.66_monotonic-clock_A2

All,
Here is the next rev of my monotonic-clock patch. Adds fixes to
insure atomicity when reading the cyclone register, as well as minor
cleanups to the scaled math code. I plan on submitting this later this
week if no major complaints are raised.

This patch, written with the advice of Joel Becker, addresses a
problem with the hangcheck-timer. The basic problem is that the
hangcheck-timer code (Required for Oracle) needs a accurate hard clock
which can be used to detect OS stalls (due to udelay() or pci bus hangs)
that would cause system time to skew (its sort of a sanity check that
insures the system's notion of time is accurate). However, currently
they are using get_cycles() to fetch the cpu's TSC register, thus this
does not work on systems w/o a synced TSC. As suggested by Andi Kleen
(see thread here:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0302.0/1234.html ) I've
worked with Joel and others to implement the monotonic_clock()
interface. Some of the major considerations made when writing this patch
were:
o Needs to be able to return accurate time in the absence of
multiple timer interrupts
o Needs to be abstracted out from the hardware
o Avoids impacting gettimeofday() performance


This interface returns a unsigned long long representing the number of
nanoseconds that has passed since time_init().

Future plans to the interface include properly handling cpu_freq changes
and porting to the different arches.

Comments, suggestions and flames welcome.

thanks
-john


Attachments:
linux-2.5.66_monotonic-clock_A2.patch (8.96 kB)
signature.asc (232.00 B)
This is a digitally signed message part
Download all attachments