The time_init() routine for Alpha should always trust the process
cycle counter values over whats in the hwrpb->cycle_freq.  Without
this the clock can be several minutes fast or slow per day.

This patch to arch/alpha/kernel/time.c seems to prevent the
clock from running slower or faster than it should.

Larry Woodman
http://www.missioncriticallinux.com


--- arch/alpha/kernel/time.c.orig       Fri Apr 28 16:18:32 2000
+++ arch/alpha/kernel/time.c    Fri Apr 28 16:25:05 2000
@@ -230,12 +230,15 @@
        cycle_freq = hwrpb->cycle_freq;
        one_percent = cycle_freq / 100;
        diff = cycle_freq - est_cycle_freq;
+
+       /* Always trust the cycle counter measurement unless a kernel arg was passed 
+in. */
+       cycle_freq = est_cycle_freq;
+
        if (diff < 0)
                diff = -diff;
        if (diff > one_percent) {
-               cycle_freq = est_cycle_freq;
-               printk("HWRPB cycle frequency bogus.  Estimated %lu Hz\n",
-                      cycle_freq);
+               printk("HWRPB cycle frequency off by more than 1%: Reported %lu,  
+Calculated %lu Hz\n",
+                      hwrpb->cycle_freq, cycle_freq);
        }
        else {
                est_cycle_freq = 0;

Reply via email to