Re: p4-clockmod not working in 2.6.16

From: Tim Phipps
Date: Wed Apr 05 2006 - 08:04:20 EST


On Tuesday 04 Apr 2006 11:47, Tim Phipps wrote:
> On Wed, 2006-03-22 at 06:20, Mike Galbraith wrote:
> > On Wed, 2006-03-22 at 06:57 +0100, Edgar Toernig wrote:
> > > | N60. Processor May Hang under Certain Frequencies and 12.5%
> > > | STPCLK# Duty Cycle
> > > |
> > > | Problem: If a system de-asserts STPCLK# at a 12.5% duty cycle,
> > > | the processor is running below 2 GHz, and the processor thermal
> > > | control circuit (TCC) on-demand clock modulation is active, the
> > > | processor may hang. This erratum does not occur under the automatic
> > > | mode of the TCC.
>
Here's a patch to 2.6.17-rc1 that disables the 12.5% DC on any CPU that has
N60. The frequencies in the errata are a bit vague so this is the safe bet
and it only disables one of the eight frequencies rather than the current
behaviour which disables all of mine!

Cheers,
Tim.
--- linux-2.6.17-rc1/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c.orig 2006-04-04 14:54:49.000000000 +0100
+++ linux-2.6.17-rc1/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2006-04-04 15:19:02.000000000 +0100
@@ -244,7 +244,7 @@
for (i=1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
if ((i<2) && (has_N44_O17_errata[policy->cpu]))
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
- else if (has_N60_errata[policy->cpu] && ((stock_freq * i)/8) < 2000000)
+ else if ((i<2) && (has_N60_errata[policy->cpu]))
p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
else
p4clockmod_table[i].frequency = (stock_freq * i)/8;