Re: gettimeofday non-monotonic on SMP 2.3.47

From: Andrea Arcangeli (andrea@suse.de)
Date: Sun Feb 27 2000 - 18:32:47 EST


On Sun, 27 Feb 2000, Boris Okun wrote:

>Before you jump and tell me that processors must be the same let me
>point out that Intel specifically calls for support of processors of
>different abilities and speeds for an OS to be MP Spec 1.4 compliant.

If the processors runs at different clock speed linux won't get it right.
In such a case you'll have to hack time.c along these lines:

--- 2.2.14/arch/i386/kernel/time.c Mon Jan 17 16:44:33 2000
+++ /tmp/time.c Mon Feb 28 00:29:54 2000
@@ -110,7 +110,6 @@
 
 #define TICK_SIZE tick
 
-#ifndef CONFIG_X86_TSC
 
 /* This function must be called with interrupts disabled
  * It was inspired by Steve McCanne's microtime-i386 for BSD. -- jrs
@@ -223,13 +222,7 @@
         return count;
 }
 
-static unsigned long (*do_gettimeoffset)(void) = do_slow_gettimeoffset;
-
-#else
-
-#define do_gettimeoffset() do_fast_gettimeoffset()
-
-#endif
+#define do_gettimeoffset() do_slow_gettimeoffset()
 
 /*
  * This version of gettimeofday has microsecond resolution
@@ -644,6 +637,7 @@
  
          dodgy_tsc();
          
+#if 0
         if (boot_cpu_data.x86_capability & X86_FEATURE_TSC) {
                 unsigned long tsc_quotient = calibrate_tsc();
                 if (tsc_quotient) {
@@ -667,6 +661,7 @@
                         }
                 }
         }
+#endif
 
 #ifdef CONFIG_VISWS
         printk("Starting Cobalt Timer system clock\n");

(the above patch will probably fix your problem anyway even if your
problem is that at least one CPU has a not correctly working TSC)

Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Feb 29 2000 - 21:00:18 EST