Andi Kleen
The latest update kernel will probably fix it (except if the BIOS misses a good PST or ACPI table, if yes then you'll need keep hardcoding a suitable table in the driver). But if Windows does C'n'Q it should work on Linux too.
The BIOS on this laptop doesn't have a correct-to-spec PST table, hence the problem. The current Linux driver also ignores the ACPI table, at least as compiled for the distribution.
Powernow with ACPI should work on the distribution. It does on other machines.
Did you really try the version in the update kernel? The powernow driver in the kernel on the CD was a bit outdated already.
OK, I looked into this a bit further, and source of the Powernow problem
appears to be that the C preprocessor define "CONFIG_ACPI_PROCESSOR" is
not defined in the compile of the driver for the updated kernel I am
using, which is version "2.6.5-7.95".
The ".config" file generated by "make oldconfig" as well as the
default config file for the uniprocessor kernel has
"CONFIG_ACPI_PROCESSOR=m" in it, but I am not sure what exactly
that should translate to in the 2.6 kernel build framework, this
being my first time playing with it.
So, it was never following the ACPI path at all, hence why I needed
to patch the code reading the broken BIOS PST table on my A64
machine.
When looking through the build tree, there seems to be 2 usages of
this...
1) As an #ifdef directive in "powernow-k7.c" and "powernow-k8.c"
2) As a Makefile build directive in "./drivers/acpi/Makefile" clearly
for the ACPI "processor" module.
FYI, this will definitely break on several other laptops out there,
even with correct BIOS PST tables, as that section will refuse to
allow higher power states if the battery doesn't support them.
Anyway, my current workaround is now just to add a
"#define CONFIG_ACPI_PROCESSOR" to the top of "powernow-k8.c".
--
Erich Stefan Boleyn