Re: [PATCH 0/13] Time: Generic Timeofday Subsystem (v B11)

From: john stultz
Date: Mon Nov 21 2005 - 21:02:44 EST


On Mon, 2005-11-21 at 18:35 -0700, john stultz wrote:
> Still on the TODO list:
> o Fix Frank Sorenson's c3tsc overcompensation problem

Hmmm. It looks like this might be related to the CONFIG_SMP disabling
cpu frequency changes to the cpu_khz value. This fix might solve that
issue.

thanks
-john

diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c
index 91a9f7d..15f3c6b 100644
--- a/arch/i386/kernel/tsc.c
+++ b/arch/i386/kernel/tsc.c
@@ -255,9 +255,7 @@ static int time_cpufreq_notifier(struct
if (!ref_freq) {
ref_freq = freq->old;
loops_per_jiffy_ref = cpu_data[freq->cpu].loops_per_jiffy;
-#ifndef CONFIG_SMP
cpu_khz_ref = cpu_khz;
-#endif
}

if ((val == CPUFREQ_PRECHANGE && freq->old < freq->new) ||
@@ -267,9 +265,9 @@ static int time_cpufreq_notifier(struct
cpu_data[freq->cpu].loops_per_jiffy = cpufreq_scale(loops_per_jiffy_ref, ref_freq, freq->new);

if (cpu_khz) {
-#ifndef CONFIG_SMP
- cpu_khz = cpufreq_scale(cpu_khz_ref, ref_freq, freq->new);
-#endif
+ if (num_online_cpus() == 1)
+ cpu_khz = cpufreq_scale(cpu_khz_ref,
+ ref_freq, freq->new);
if (!(freq->flags & CPUFREQ_CONST_LOOPS)) {
tsc_khz = cpu_khz;
set_cyc2ns_scale(cpu_khz);


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