aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2006-01-06 00:12:17 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-06 08:33:39 -0800
commitbcf0f0d233fc76e7c59c7f731caad555428d0e8d (patch)
tree34b39caa375380b86eba4ddf1ab2d5928b631f13
parent3841b0a173cb6fc52163e67c03280543f2412db3 (diff)
downloadkernel_samsung_crespo-bcf0f0d233fc76e7c59c7f731caad555428d0e8d.zip
kernel_samsung_crespo-bcf0f0d233fc76e7c59c7f731caad555428d0e8d.tar.gz
kernel_samsung_crespo-bcf0f0d233fc76e7c59c7f731caad555428d0e8d.tar.bz2
[PATCH] fix cpu frequency detection in arch/i386/kernel/timers/timer_tsc.c::recalibrate_cpu_khz()
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>
-rw-r--r--arch/i386/kernel/timers/timer_tsc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c
index d395e3b..47675bb 100644
--- a/arch/i386/kernel/timers/timer_tsc.c
+++ b/arch/i386/kernel/timers/timer_tsc.c
@@ -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,