Re: p4-clockmod not working in 2.6.16

From: Tim Phipps
Date: Thu Apr 13 2006 - 08:21:24 EST


On Wednesday 05 Apr 2006 14:59, Mike Galbraith wrote:
> On Wed, 2006-04-05 at 13:02 +0100, Tim Phipps wrote:
> > 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!
>
> Works for me. Perhaps you should update...
> dprintk("has errata -- disabling frequencies lower than 2ghz\n");
> ...,slap a Signed-off-by: on it and see if it flys.

Not sure how to do a Signed-off-by but here's the patch.
--- linux-2.6.17-rc1/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c.orig 2006-04-10 17:12:23.000000000 +0100
+++ linux-2.6.17-rc1/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2006-04-10 17:23:44.000000000 +0100
@@ -17,6 +17,7 @@
*
* Date Errata Description
* 20020525 N44, O17 12.5% or 25% DC causes lockup
+ * 20060410 N60 12.5% DC causes lockup
*
*/

@@ -231,7 +232,7 @@

case 0x0f29:
has_N60_errata[policy->cpu] = 1;
- dprintk("has errata -- disabling frequencies lower than 2GHz\n");
+ dprintk("has errata -- disabling 12.5%% duty cycle\n");
break;
}

@@ -244,7 +245,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;