Common Linux kernel CPUFREQ problems.

CPU frequency scaling in the Linux 2.6 kernels.


powernow-k8: MP systems not supported by PSB BIOS structure.

The powernow-k8 driver relies on tables in the BIOS to list the possible frequency/voltage pairs for each processor. First it tries the ACPI tables, and then if that doesn't work out, it falls back on the legacy 'PSB' data structure. The only problem is that the PSB structures are only reliable on single CPU systems.

This can occur for one of several reasons.

  • You upgraded your single core system to a dual/quad-core system, and your BIOS doesn't support SMP. Somewhat less likely these days.
  • Your BIOS has "Cool & Quiet" or "Powernow" option disabled. Setting this option to enabled will allow Linux to access the ACPI tables, making powernow-k8 work again.

VIA Longhaul driver locks up.

The longhaul driver has never been 100% stable on all systems. There seems to be a large amount of variance between the quality of various boards. What works fine on one board fails on another, even though the steppings of the CPU are identical. More recent versions of the driver have tried to compensate for various board-level problems by adding chipset workarounds, and trying to be more careful when doing speed transitions, but it seems unlikely that this driver will ever be 100% stable.

Newer VIA CPUs don't use longhaul, but the e_powersaver module, which seems to be a lot more stable.

I overclocked my CPU, and now cpufreq gets the frequency wrong.

cpufreq needs a pair of values. A frequency, and its associated voltage. These pairs come from a static table in the BIOS. When you overclock, the frequency no longer matches anything in the table, as the table remains constant even though the hardware is now running at a different speed. Other than measuring the speed every time a transition occurred (which isn't feasible as it would incur a noticable performance overhead), it isn't possible for cpufreq to know the current speed if it doesn't match what the BIOS tables tell it that multiplier maps to.

short answer: If you want cpufreq to report correct values, don't overclock.


Web www.codemonkey.org.uk

back to cpufreq page.: back to front page..