# speedstep-centrino bug on a Dothan 1.6 [SOLVED]

## taboom

Hi!

There still seem to be bugs in the speedstep-centrino.c. I've read a lot of pages about getting speedstepping to work on a Centrino, but I can't get it to work for me. The page https://forums.gentoo.org/viewtopic.php?t=223411 showed some problems which were fixed, but all problems with the Dothan are still not solved.

I have an Acer 6003Lmi with a Pentium M 725 (Dothan 1.6 GHz 2MB L2 cache) and I'm using kernel 2.6.10-rc2-mm3, which should be the latest available kernel.

When I enable:

<*> Intel Enhanced SpeedStep

[*]   Use ACPI tables to decode valid frequency/voltage pairs

[*]   Built-in tables for Banias CPUs

I get

speedstep-centrino: invalid ACPI data

speedstep-centrino: no table support for CPU model "Intel(R) Pentium(R) M processor 1.60GHz":

speedstep-centrino: try compiling with CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI enabled

at least the last line shouldn't appear as I have it enabled - a simple code bug but

if I remove Built-in tables for Banias CPUs (as this is a dothan)

I get

speedstep-centrino: invalid ACPI data

and this is the problem. Probably someone with a bit more knowledge about this can help?

Thanks in advance!Last edited by taboom on Tue Dec 07, 2004 11:00 pm; edited 1 time in total

----------

## brodo

please boot with cpufreq.debug=7 appended as boot option, and post the resulting dmesg here. Also, you may want to try the acpi-cpufreq driver in the meantime.

----------

## taboom

Yup, I've been using it since I noticed this problem.

Here's my dmesg with cpufreq.debug=7 (ok, it has a lot useless stuff in it but I didn't bother to snip it at the beginning, as I don't exactly know what all you need):

```

uction... OK.

ACPI: IRQ9 SCI: Edge set to Level Trigger.

CPU0: Intel(R) Pentium(R) M processor 1.60GHz stepping 06

per-CPU timeslice cutoff: 5849.10 usecs.

task migration cache decay timeout: 6 msecs.

SMP motherboard not detected.

Local APIC not detected. Using dummy APIC emulation.

Brought up 1 CPUs

CPU0:

 domain 0: span 1

  groups: 1

  domain 1: span 1

   groups: 1

NET: Registered protocol family 16

PCI: PCI BIOS revision 2.10 entry at 0xfd742, last bus=2

PCI: Using configuration type 1

mtrr: v2.0 (20020519)

ACPI: Subsystem revision 20041105

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

PCI: Probing PCI hardware (bus 00)

PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1

PCI: Transparent bridge - 0000:00:1e.0

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs *6)

ACPI: PCI Interrupt Link [LNKB] (IRQs *10)

ACPI: PCI Interrupt Link [LNKC] (IRQs *6)

ACPI: PCI Interrupt Link [LNKD] (IRQs *6)

ACPI: PCI Interrupt Link [LNKE] (IRQs *10)

ACPI: PCI Interrupt Link [LNKF] (IRQs 10) *0, disabled.

ACPI: PCI Interrupt Link [LNKG] (IRQs 6) *0, disabled.

ACPI: PCI Interrupt Link [LNKH] (IRQs *10)

ACPI: Embedded Controller [EC0] (gpe 29)

ACPI: Power Resource [PFN0] (off)

ACPI: Power Resource [PFN1] (off)

Linux Plug and Play Support v0.97 (c) Adam Belay

pnp: PnP ACPI init

pnp: PnP ACPI: found 11 devices

SCSI subsystem initialized

usbcore: registered new driver usbfs

usbcore: registered new driver hub

PCI: Using ACPI for IRQ routing

** PCI interrupts are no longer routed automatically.  If this

** causes a device to stop working, it is probably because the

** driver failed to call pci_enable_device().  As a temporary

** workaround, the "pci=routeirq" argument restores the old

** behavior.  If this argument makes the device work again,

** please email the output of "lspci" to bjorn.helgaas@hp.com

** so I can fix the driver.

Simple Boot Flag at 0x37 set to 0x1

Machine check exception polling timer started.

audit: initializing netlink socket (disabled)

audit(1102375666.268:0): initialized

devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)

devfs: boot_options: 0x1

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

NTFS driver 2.1.23-WIP [Flags: R/O].

Initializing Cryptographic API

ACPI: AC Adapter [ACAD] (on-line)

ACPI: Battery Slot [BAT1] (battery absent)

ACPI: Battery Slot [BAT2] (battery absent)

ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID]

ACPI: Sleep Button (CM) [SLPB]

ACPI: Fan [FAN0] (off)

ACPI: Fan [FAN1] (off)

ACPI: Video Device [GFX0] (multi-head: yes  rom: yes  post: no)

ACPI: Processor [CPU0] (supports C1 C2 C3)

ACPI: Processor [CPU0] (supports 8 throttling states)

ACPI: Thermal Zone [THRM] (47 C)

Linux agpgart interface v0.100 (c) Dave Jones

agpgart: Detected an Intel 855 Chipset.

agpgart: Maximum main memory to use for agp memory: 423M

agpgart: Detected 16252K stolen memory.

agpgart: AGP aperture is 128M @ 0xe8000000

[drm] Initialized drm 1.0.0 20040925

ACPI: PS/2 Keyboard Controller [KBC] at I/O 0x60, 0x64, irq 1

ACPI: PS/2 Mouse Controller [MOU2] at irq 12

i8042.c: Detected active multiplexing controller, rev 1.1.

serio: i8042 AUX0 port at 0x60,0x64 irq 12

serio: i8042 AUX1 port at 0x60,0x64 irq 12

serio: i8042 AUX2 port at 0x60,0x64 irq 12

serio: i8042 AUX3 port at 0x60,0x64 irq 12

serio: i8042 KBD port at 0x60,0x64 irq 1

Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled

ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10

PCI: setting IRQ 10 as level-triggered

ACPI: PCI interrupt 0000:00:1f.6[B] -> GSI 10 (level, low) -> IRQ 10

ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

io scheduler noop registered

io scheduler anticipatory registered

io scheduler deadline registered

io scheduler cfq registered

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

ICH4: IDE controller at PCI slot 0000:00:1f.1

PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 6

PCI: setting IRQ 6 as level-triggered

ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 6 (level, low) -> IRQ 6

ICH4: chipset revision 3

ICH4: not 100% native mode: will probe irqs later

    ide0: BM-DMA at 0x1810-0x1817, BIOS settings: hda:DMA, hdb:pio

    ide1: BM-DMA at 0x1818-0x181f, BIOS settings: hdc:DMA, hdd:pio

Probing IDE interface ide0...

hda: TOSHIBA MK6025GAS, ATA DISK drive

elevator: using anticipatory as default io scheduler

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

Probing IDE interface ide1...

hdc: QSI DVDRW SDW-042, ATAPI CD/DVD-ROM drive

ide1 at 0x170-0x177,0x376 on irq 15

Probing IDE interface ide2...

ide2: Wait for ready failed before probe !

Probing IDE interface ide3...

ide3: Wait for ready failed before probe !

Probing IDE interface ide4...

ide4: Wait for ready failed before probe !

Probing IDE interface ide5...

ide5: Wait for ready failed before probe !

hda: max request size: 128KiB

hda: 117210240 sectors (60011 MB), CHS=65535/16/63, UDMA(100)

hda: cache flushes supported

 /dev/ide/host0/bus0/target0/lun0: p1 p2 p3 < p5 p6 > p4

hdc: ATAPI 24X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33)

Uniform CD-ROM driver Revision: 3.20

libata version 1.10 loaded.

ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 10

ACPI: PCI interrupt 0000:00:1d.7[D] -> GSI 10 (level, low) -> IRQ 10

ehci_hcd 0000:00:1d.7: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller

PCI: Setting latency timer of device 0000:00:1d.7 to 64

ehci_hcd 0000:00:1d.7: irq 10, pci mem 0xe0100000

ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1

PCI: cache line size of 32 is not supported by device 0000:00:1d.7

ehci_hcd 0000:00:1d.7: USB 2.0 initialized, EHCI 1.00, driver 26 Oct 2004

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 6 ports detected

USB Universal Host Controller Interface driver v2.2

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 6

ACPI: PCI interrupt 0000:00:1d.0[A] -> GSI 6 (level, low) -> IRQ 6

uhci_hcd 0000:00:1d.0: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1

PCI: Setting latency timer of device 0000:00:1d.0 to 64

uhci_hcd 0000:00:1d.0: irq 6, io base 0x1820

uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2

hub 2-0:1.0: USB hub found

hub 2-0:1.0: 2 ports detected

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 6

ACPI: PCI interrupt 0000:00:1d.1[B] -> GSI 6 (level, low) -> IRQ 6

uhci_hcd 0000:00:1d.1: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2

PCI: Setting latency timer of device 0000:00:1d.1 to 64

uhci_hcd 0000:00:1d.1: irq 6, io base 0x1840

uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3

hub 3-0:1.0: USB hub found

hub 3-0:1.0: 2 ports detected

ACPI: PCI interrupt 0000:00:1d.2[C] -> GSI 6 (level, low) -> IRQ 6

uhci_hcd 0000:00:1d.2: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3

PCI: Setting latency timer of device 0000:00:1d.2 to 64

uhci_hcd 0000:00:1d.2: irq 6, io base 0x1860

uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4

hub 4-0:1.0: USB hub found

hub 4-0:1.0: 2 ports detected

usb 1-6: new high speed USB device using ehci_hcd and address 3

hub 1-6:1.0: USB hub found

hub 1-6:1.0: 4 ports detected

usbcore: registered new driver usblp

drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver

usbcore: registered new driver usbhid

drivers/usb/input/hid-core.c: v2.0:USB HID core driver

mice: PS/2 mouse device common for all mice

input: AT Translated Set 2 keyboard on isa0060/serio0

Advanced Linux Sound Architecture Driver Version 1.0.7 (Thu Nov 11 10:36:46 2004 UTC).

ACPI: PCI interrupt 0000:00:1f.5[B] -> GSI 10 (level, low) -> IRQ 10

PCI: Setting latency timer of device 0000:00:1f.5 to 64

usb 3-2: new low speed USB device using uhci_hcd and address 2

input: USB HID v1.00 Mouse [Logitech USB-PS/2 Mouse M-BA47] on usb-0000:00:1d.1-2

intel8x0_measure_ac97_clock: measured 49483 usecs

intel8x0: clocking to 48000

ALSA device list:

  #0: Intel 82801DB-ICH4 with ALC202 at 0xe0100c00, irq 10

NET: Registered protocol family 2

IP: routing cache hash table of 2048 buckets, 32Kbytes

TCP: Hash tables configured (established 16384 bind 21845)

ip_conntrack version 2.1 (3959 buckets, 31672 max) - 308 bytes per conntrack

ip_tables: (C) 2000-2002 Netfilter core team

ipt_recent v0.3.1: Stephen Frost <sfrost@snowman.net>.  http://snowman.net/projects/ipt_recent/

arp_tables: (C) 2002 David S. Miller

NET: Registered protocol family 1

NET: Registered protocol family 17

cpufreq-core: trying to register driver centrino

cpufreq-core: adding CPU 0

speedstep-centrino: Invalid control/status registers (1 - 1)

speedstep-centrino: invalid ACPI data

cpufreq-core: initialization failed

cpufreq-core: no CPU initialized for driver centrino

cpufreq-core: unregistering CPU 0

acpi-cpufreq: acpi_cpufreq_init

cpufreq-core: trying to register driver acpi-cpufreq

cpufreq-core: adding CPU 0

acpi-cpufreq: acpi_cpufreq_cpu_init

acpi-cpufreq: acpi_processor_cpu_init_pdc

acpi-cpufreq: acpi_processor_cpu_init_pdc_est

freq-table: table entry 0: 1600000 kHz, 0 index

freq-table: table entry 1: 1400000 kHz, 1 index

freq-table: table entry 2: 1200000 kHz, 2 index

freq-table: table entry 3: 1000000 kHz, 3 index

freq-table: table entry 4: 600000 kHz, 4 index

acpi-cpufreq: CPU0 - ACPI performance management activated.

acpi-cpufreq:      *P0: 1600 MHz, 24000 mW, 10 uS

acpi-cpufreq:       P1: 1400 MHz, 20000 mW, 10 uS

acpi-cpufreq:       P2: 1200 MHz, 18000 mW, 10 uS

acpi-cpufreq:       P3: 1000 MHz, 16000 mW, 10 uS

acpi-cpufreq:       P4: 600 MHz, 12000 mW, 10 uS

freq-table: setting show_table for cpu 0 to ded53480

cpufreq-core: setting new policy for CPU 0: 600000 - 1600000 kHz

acpi-cpufreq: acpi_cpufreq_verify

freq-table: request for verification of policy (600000 - 1600000 kHz) for cpu 0

freq-table: verification lead to (600000 - 1600000 kHz) for cpu 0

acpi-cpufreq: acpi_cpufreq_verify

freq-table: request for verification of policy (600000 - 1600000 kHz) for cpu 0

freq-table: verification lead to (600000 - 1600000 kHz) for cpu 0

cpufreq-core: new min and max freqs are 600000 - 1600000 kHz

cpufreq-core: governor switch

cpufreq-core: __cpufreq_governor for CPU 0, event 1

userspace: managing cpu 0 started (600000 - 1600000 kHz, currently 1600000 kHz)

cpufreq-core: governor: change or update limits

cpufreq-core: __cpufreq_governor for CPU 0, event 3

userspace: limit event for cpu 0: 600000 - 1600000 kHz, currently 1600000 kHz, last set to 1600000 kHz

cpufreq-core: target for CPU 0: 1600000 kHz, relation 0

acpi-cpufreq: acpi_cpufreq_setpolicy

freq-table: request for target 1600000 kHz (relation: 0) for cpu 0

freq-table: target is 0 (1600000 kHz, 0)

acpi-cpufreq: acpi_processor_set_performance

acpi-cpufreq: Already at target state (P0)

cpufreq-core: initialization complete

cpufreq-core: driver acpi-cpufreq up and running

ACPI: (supports S0 S3 S4 S5)

ACPI wakeup devices: 

GLAN MPCI T394 MDM0 USB1 USB2 USB3 

ReiserFS: hda4: found reiserfs format "3.6" with standard journal

ReiserFS: hda4: using ordered data mode

ReiserFS: hda4: journal params: device hda4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30

ReiserFS: hda4: checking transaction log (hda4)

ReiserFS: hda4: Using r5 hash to sort names

VFS: Mounted root (reiserfs filesystem) readonly.

Mounted devfs on /dev

Freeing unused kernel memory: 212k freed

Adding 522072k swap on /dev/hda6.  Priority:-1 extents:1

tg3.c:v3.14 (November 15, 2004)

ACPI: PCI interrupt 0000:02:02.0[A] -> GSI 6 (level, low) -> IRQ 6

eth0: Tigon3 [partno(BCM95705A50) rev 3003 PHY(5705)] (PCI:33MHz:32-bit) 10/100/1000BaseT Ethernet 00:c0:9f:46:7a:6e

eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] Split[0] WireSpeed[0] TSOcap[1] 

ieee80211_crypt: registered algorithm 'NULL'

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 0.15

ipw2200: Copyright(c) 2003-2004 Intel Corporation

ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 10

ACPI: PCI interrupt 0000:02:04.0[A] -> GSI 10 (level, low) -> IRQ 10

ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection

ipw2200: Radio Frequency Kill Switch is On:

Kill switch must be turned off for wireless networking to work.

Acer Travelmate hotkey driver v0.5.18

acerhk: Your hardware does not need polling enabled for hotkeys to work

atkbd.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0).

atkbd.c: Use 'setkeycodes 00 <keycode>' to make it known.

Synaptics Touchpad, model: 1

 Firmware: 5.8

 180 degree mounted touchpad

 Sensor: 29

 new absolute packet format

 Touchpad has extended capability bits

 -> 4 multi-buttons, i.e. besides standard buttons

 -> multifinger detection

 -> palm detection

input: SynPS/2 Synaptics TouchPad on isa0060/serio4

i2c /dev entries driver

kjournald starting.  Commit interval 5 seconds

EXT3 FS on hda1, internal journal

EXT3-fs: mounted filesystem with ordered data mode.

NTFS volume version 3.1.

NTFS volume version 3.1.

tg3: eth0: Link is up at 100 Mbps, full duplex.

tg3: eth0: Flow control is off for TX and off for RX.

cpufreq-core: setting new policy for CPU 0: 600000 - 1600000 kHz

acpi-cpufreq: acpi_cpufreq_verify

freq-table: request for verification of policy (600000 - 1600000 kHz) for cpu 0

freq-table: verification lead to (600000 - 1600000 kHz) for cpu 0

acpi-cpufreq: acpi_cpufreq_verify

freq-table: request for verification of policy (600000 - 1600000 kHz) for cpu 0

freq-table: verification lead to (600000 - 1600000 kHz) for cpu 0

cpufreq-core: new min and max freqs are 600000 - 1600000 kHz

cpufreq-core: governor: change or update limits

cpufreq-core: __cpufreq_governor for CPU 0, event 3

userspace: limit event for cpu 0: 600000 - 1600000 kHz, currently 1600000 kHz, last set to 1600000 kHz

cpufreq-core: target for CPU 0: 1600000 kHz, relation 0

acpi-cpufreq: acpi_cpufreq_setpolicy

freq-table: request for target 1600000 kHz (relation: 0) for cpu 0

freq-table: target is 0 (1600000 kHz, 0)

acpi-cpufreq: acpi_processor_set_performance

-snip- just continues with the freq_table and cpufreq_core stuff

```

----------

## brodo

your notebook's BIOS doesn't contain the information necessary for the speedstep-centrino driver to work. It doesn't export the new interface in the ACPI tables (DSDT or SSDT), so only the old acpi-cpufreq driver can work. There's nothing which can be done in the moment, unfortunately. Except telling ACer that they're shipping BIOSes which don't offer all features they could and should...

----------

## taboom

Ok, but doesn't the speedstep-centrino module has table-support for the Banias chips? Couldn't it be possible to add these for my Dothan chip aswell? In the thread I referred to in my first post, they found out the DSDT and SSDT for the chip, I guess I could do the same. Could I (with your help) then code it into the driver?

Acer has VERY lousy support, as I and many others have noticed when dealing with problems. Asking them to improve something in their notebooks (like providing a new bios) is impossible. They will just say something and forget about it right after the call. When I first bought an Acer, it was a tablet and after having it in service several times they told me to return it and take back my money just because they failed to repair it. Others informed that the same support person "never had heared" about the problem, 5 times when he had called them.

If interested read my story at http://www.tabletpcbuzz.com/forum/topic.asp?TOPIC_ID=9837 and other topics about the same problem.

But back to the speedstep-centrino module, as it works in Windows, it must be possible to get it to work in Linux, or is it? Thanks for your help!

----------

## taboom

ooh, or is it so that the required info isn't possible to retrieve from my computer, so it needs to be fetched from some Intel docs or support to get this to work, right?

----------

## taboom

Ok, I got it to work now. I found something at http://www.ussg.iu.edu/hypermail/linux/kernel/0408.0/1488.html Here this problem has had a solution already since Aug 6th! So what I did was jus to update my speedstep-centrino.c from mm-sources (2.6.10-rc2-mm3).

Now I just wonder why this isn't in kernel.org yet.

And also: is there a prog that can throttle down the processor automatically to prevent the fan from ever going on? and I meen ever. So that the processor never will heat up over a specified thermal point?

----------

## brodo

 *taboom wrote:*   

> Ok, I got it to work now. I found something at http://www.ussg.iu.edu/hypermail/linux/kernel/0408.0/1488.html Here this problem has had a solution already since Aug 6th! So what I did was jus to update my speedstep-centrino.c from mm-sources (2.6.10-rc2-mm3).
> 
> Now I just wonder why this isn't in kernel.org yet.

 

As you can see in that patch description,  there are _four_ voltages specified for each frequency. Only the manufactor and the BIOS writers do know which one of these four is the correct one for this notebook. A wrong one _may_ cause hardware(!) breakage. Therefore, it was decided on the cpufreq mailing list NOT to include such a patch.

----------

## unclefu

Hm...

the problem is, when the bios sets other speeds / voltage to the cpu the hardware could get damaged.

thats why the patch wont make it to the kernel....

----------

## taboom

Mm, I believe you, so far the speedstepping has worked well (without hardware problems) but I'm a bit afraid of using it so.. how can I find out the vid of my processor, if Acer can't help me?

----------

## unclefu

Shit wrong topic....

the post should go to 

https://forums.gentoo.org/viewtopic.php?p=1984700#1984700

and:

no, i'm not able to help you, because of the problems announced in the post above to my first one.

sorry i'm trying to get aopen to help me.  :Wink: 

----------

## taboom

After a long time of waiting I finally got answer from Acer, and I now have a real solution for this problem.

To find out what processor you have, run Windows, and get CPU-Z from www.cpuid.com. Now utilize your processor and follow the Voltage-field. Compare this to Intels specs (http://developer.intel.com/design/mobile/datashts/302189.htm) and you can find out what VID your processor is. IF you believe this program is correct, and trust these results, you know how to utilize the cpufreq-patch (ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm6/broken-out/bk-cpufreq.patch).

Good luck, and remember, I take no responsiility for this.

----------

