[PATCH] fix cpu frequency detection in arch/i386/kernel/timers/timer_tsc.c::recalibra...
authorLarry Finger <Larry.Finger@lwfinger.net>
Fri, 6 Jan 2006 08:12:17 +0000 (00:12 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 6 Jan 2006 16:33:39 +0000 (08:33 -0800)
When we re-calibrate the frequency, it is likely that an interrupt (as for
example the main system clock) will be triggered by the system.  Therefore
the calibration may not be accurate.  This will also provide a fix to bug
#5266.

Many thanks to Larry Finger for helping resolving this issue.

Signed-off-by: Bruno Ducrot <ducrot@poupinou.org>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Dave Jones <davej@codemonkey.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/kernel/timers/timer_tsc.c

index d395e3b42485f68fafa1d7f73ca9a44273a0827c..47675bbbb316eedb7edd0ba6a0bd7982d8d982a0 100644 (file)
@@ -330,7 +330,9 @@ int recalibrate_cpu_khz(void)
        unsigned int cpu_khz_old = cpu_khz;
 
        if (cpu_has_tsc) {
+               local_irq_disable();
                init_cpu_khz();
+               local_irq_enable();
                cpu_data[0].loops_per_jiffy =
                    cpufreq_scale(cpu_data[0].loops_per_jiffy,
                                  cpu_khz_old,