FS#17107 - [kernel26] Error on load speedstep-centrino or acpi-cpufreq on Pentium M (Dothan)

Attached to Project: Arch Linux
Opened by toorlv (toorlv) - Thursday, 12 November 2009, 15:47 GMT
Last edited by Thomas Bächler (brain0) - Monday, 30 August 2010, 13:37 GMT
Task Type Bug Report
Category Upstream Bugs
Status Closed
Assigned To Tobias Powalowski (tpowa)
Thomas Bächler (brain0)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 3
Private No

Details

Arch Linux i686, fresh install. 2.6.31 kernel (i also tried other kernels like ZEN).
Computer: Fujitsu-Siemens AMILO L7300

Problem:

When I modprobe p4-clockmod, dmesg says:
p4-clockmod: Warning: Pentium M detected. The
acpi_cpufreq module offers voltage scaling in addition of frequency
scaling. You should use that instead of p4-clockmod, if possible.

When using p4-clockmod, my 1.73GHZ will be limited to 600MHz, so instead I try to modprobe acpi-cpufreq, but it gives an error:

[root@archijs build]# modprobe acpi-cpufreq
FATAL: Error inserting acpi_cpufreq (/lib/modules/2.6.31-ARCH/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko): No such device

cpuinfo:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.73GHz (Dothan)
stepping : 8
cpu MHz : 598.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up bts est tm2
bogomips : 1197.07
clflush size : 64
power management:

/proc/config.gz:
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=m
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_GX_SUSPMOD=m
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_CPUFREQ_NFORCE2=m
CONFIG_X86_LONGRUN=m
CONFIG_X86_LONGHAUL=m
CONFIG_X86_E_POWERSAVER=m
CONFIG_X86_CPUFREQ_EEEPC900=m

#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=m
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y

[root@archijs build]# modprobe speedstep-lib
[root@archijs build]# modprobe speedstep-ich
FATAL: Error inserting speedstep_ich (/lib/modules/2.6.31-ARCH/kernel/arch/x86/kernel/cpu/cpufreq/speedstep-ich.ko): No such device
[root@archijs build]# modprobe speedstep-centrino
FATAL: Error inserting speedstep_centrino (/lib/modules/2.6.31-ARCH/kernel/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.ko): No such device

[root@archijs build]# ls /sys/devices/system/cpu/cpu0/
cpuidle crash_notes thermal_throttle topology
[root@archijs build]# dmesg | grep throttling
ACPI: Processor [CPU0] (supports 8 throttling states)
[root@archijs build]# dmesg | grep acpi
pata_acpi 0000:00:11.1: power state changed by ACPI to D0
pata_acpi 0000:00:11.1: PCI INT A -> Link[LNKA] -> GSI 7 (level, low) -> IRQ 7
pata_acpi 0000:00:11.1: VIA VLink IRQ fixup, from 0 to 7
pata_acpi 0000:00:11.1: PCI INT A disabled
[root@archijs build]# dmesg | grep cpu
KERNEL supported cpus:
NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1
[<c12ff1aa>] ? identify_cpu+0x377/0x386
[<c1429dc9>] ? identify_boot_cpu+0xa/0x1e
cpuidle: using governor ladder
cpuidle: using governor menu
[root@archijs build]# cat /proc/acpi/processor/CPU1/throttling
cat: /proc/acpi/processor/CPU1/throttling: No such file or directory
[root@archijs build]# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU

On Ubuntu Karmic/Jaunty all works fine. It uses centrino driver (cpufreq-info).
BIOS is up to date -- i also checked it's settings (tried 'Restore Defaults'), but didn't found anything that is related to SpeedStep or ACPI Tables..
This task depends upon

Closed by  Thomas Bächler (brain0)
Monday, 30 August 2010, 13:37 GMT
Reason for closing:  Won't fix
Additional comments about closing:  Total ignorance of the end-user.
Comment by Andrea Scarpino (BaSh) - Thursday, 12 November 2009, 16:39 GMT
works here. same processor.

$ sudo modprobe acpi-cpufreq
$ lsmod | grep acpi
acpi_cpufreq 8648 0

I added acpi-cpufreq cpufreq_ondemand cpufreq_powersave into MODULES()
Comment by toorlv (toorlv) - Thursday, 12 November 2009, 18:16 GMT
It works because your BIOS works fine (ACPI voltage tables)...

Comment by toorlv (toorlv) - Thursday, 12 November 2009, 18:18 GMT
I have seen other reports, that some patching to the kernel is needed to get
speedstep running on those processors, for example:

http://localhost.ruhr.de/~stefan/acerTM292/patches/cpufreq-speedstep-dothan-3.patch

How can I apply it?
Comment by toorlv (toorlv) - Friday, 13 November 2009, 12:09 GMT
No success with this patch, because kernel also include tables for Banias CPU's. :( I can't compile kernel without them..


P.S. falling back to Ubuntu
Comment by Thomas Bächler (brain0) - Friday, 13 November 2009, 12:16 GMT
A BIOS update or an upstream bug report should be made. I doubt there is anything we can do until then.
Comment by toorlv (toorlv) - Friday, 13 November 2009, 12:18 GMT
Maybe you can remake this patch for current (2.6.31) kernel?
Comment by Thomas Bächler (brain0) - Friday, 13 November 2009, 12:23 GMT
I won't add patches to the kernel whose function I don't understand and which are not approved by upstream developers, or have any chance of being approved by upstream developers.
Comment by toorlv (toorlv) - Friday, 13 November 2009, 12:32 GMT Comment by toorlv (toorlv) - Friday, 13 November 2009, 16:50 GMT
FINALLY, IT WORKS!

Modified speedstep-centrino.c for 2.6.31:
http://rapidshare.com/files/306503098/speedstep-centrino.c
Comment by Thomas Bächler (brain0) - Friday, 13 November 2009, 17:04 GMT
Erm? Rapidshare-links on the bugtracker? Use a pastebin, or attach the file.
Comment by Nuno (quarkup) - Monday, 21 December 2009, 13:08 GMT
Hi. I also have this issue and I'm recompiling the kernel with that mod (and changed some of the kernel configs)
im using a pentium-m 1.73GHz on a fujitsu-siemens Amilo 3438G
please take a fast look for my topic about this issue:
http://bbs.archlinux.org/viewtopic.php?id=87274


also you can check the following topics below:

https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.22/+bug/132271
http://bbs.archlinux.org/viewtopic.php?id=32767
http://bbs.archlinux.org/viewtopic.php?id=87274
Comment by Nuno (quarkup) - Tuesday, 22 December 2009, 12:40 GMT
the file to be patched is /linux-2.6.31/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c

in the PKGBUILD for the core/kernel26 (from abs) you can just add another line before the first patch
patch -N "${srcdir}/linux-2.6.31/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c" -i ${srcdir}/speedstep-centrino.patch || return $1

and add the speedstep-centrino.patch to the file list (the md5sum is '1cf1d69c83fd6bd5b2c1bd4169391a61').
Comment by Nuno (quarkup) - Wednesday, 23 December 2009, 16:08 GMT
I got the cpufreq working fine in my pentium-m 1.73GHz

Patched and recompiled the kernel for the pentium-m (optimize)
use this kernel to avoid this bug

http://aur.archlinux.org/packages.php?ID=33104
Comment by Gerardo Exequiel Pozzi (djgera) - Sunday, 28 February 2010, 00:22 GMT
  • Field changed: Status (Assigned → Waiting on Response)
status with latest 2.6.33?
Comment by Nuno (quarkup) - Sunday, 28 February 2010, 15:47 GMT
you can try the aur/kernel26-pentium-m package (its on AUR, here: http://aur.archlinux.org/packages.php?ID=33104 )

I'm not updating it until kernel 2.6.33 has the ZEN patchset stable http://zen-kernel.org/
Comment by Michael (SiD) - Saturday, 06 March 2010, 20:35 GMT
I added a table for the pentium-m 715 1.5GHz (Dothan) to the patch.

Tested with 2.6.32.2

But I downloaded the 2.6.33 sources and compared the speedstep-centrino.c files.
They are identic, so I hope it will work with 2.6.33 too.

I'll test it soon...
Comment by Michael (SiD) - Saturday, 06 March 2010, 23:11 GMT
I think "base" should be 100 instead of 133 for the table I added to the patch.

I changed that ...
Comment by Gerardo Exequiel Pozzi (djgera) - Saturday, 03 July 2010, 22:02 GMT
status with latest 2.6.34?
Comment by Michael (SiD) - Sunday, 04 July 2010, 15:14 GMT
My patch works here with latest kernel 2.6.34.
There was only one line added to the speedstep-centrino.c file, So just the line numbers changed in the patch.
Comment by Gerardo Exequiel Pozzi (djgera) - Sunday, 04 July 2010, 17:33 GMT
Please send the patch to upstream. Or this patch was rejected?
I recommend this, since kernel packagers does not patch kernel26 (there is only one few exception for auf2)
Comment by Alois Nespor (anespor) - Saturday, 14 August 2010, 18:20 GMT Comment by toorlv (toorlv) - Thursday, 19 August 2010, 05:47 GMT
Anyone can upload binary package of kernel26-pentium-m?
Comment by toorlv (toorlv) - Friday, 20 August 2010, 04:03 GMT Comment by toorlv (toorlv) - Monday, 30 August 2010, 13:03 GMT
Bye-bye, Arch! Hello, Ubuntu!

close the task, please
Comment by Thomas Bächler (brain0) - Monday, 30 August 2010, 13:36 GMT
Very funny "A task closure has been requested. Reason for request: total ignore from developers".

As was stated earlier, we can not and will not maintain changes to the kernel that are not approved by upstream developers and merged into a future Linux tree. There are many reasons why this might be the case:

1) The patches have never been sent to Linux developers (and if they have been written by Ubuntu people, that is very likely, they would rather fork a project than communicate with it properly).
2) The patches are of poor quality.
3) The patches are incorrect.
4) ...

In any of these cases, we will not just add some random code that works on first glance without understanding it.

In this particular case, the following happend: An unsafe(!) patch was added to the speedstep-centrino driver, which is deprecated. It was recommended by upstream developers that the acpi-cpufreq driver is used instead. The fact that acpi-cpufreq is not working is due to broken ACPI tables. Instead of a) fixing the ACPI tables by upgrading the BIOS or b) trying to improve the Linux ACPI parser to support this particular case, the unsafe patch was considered a permanent solution, although it might or might not set the correct voltage and potentially risks to destroy the CPU. That may be Ubuntu way of doing thing, but not the Arch way of doing things.

Another way of putting it is this: I don't have the broken hardware, you do. So it's your responsibility to communicate with upstream to fix the bug, as you are the only one who CAN do that ("Hello, some guy told me his acpi-cpufreq didn't work, can you please fix it. No, I can't give you any details without asking him first, please wait another week.") - at least in an Arch world. If you are not capable or willing to do that, then you are and have always been using the wrong distribution.

Loading...