Das Speedstep Kompendium

Rund um Mobile-Hardware, Tipps/Tricks, KnowHow...

Moderator: Rio71

Post Reply
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Das Speedstep Kompendium

Post by Franzose »

Moin,

so, ich habe mich einmal extremst informiert und weiß nun auch, warum es bei meinem Ipox nicht funktioniert! Deswegen soll dieser Thread hier einmal alle Informationen zum Thema Speedstep sammeln. Hier einmal der erste Teil, weitere werden folgen.

Zunächst einmal hängt der Speedstep des Pentium-M im Gegensatz zum z.B. Pentium-4M oder AMD Cool'n'Quiet nicht vom BIOS-Support des Boards ab! Es ist völlig unabhängig. Die EIST (Enhanced Intel Speedstep Technology) wird von jedem Centrino Pentium-M Prozessor unterstützt. Ob diese dann vom BIOS, vom Betriebssystem oder was auch immer geregelt wird, ist zunächst völlig egal.

Unter Linux wird das ganze vom ACPI-Management und dem Modul speedstep-centrino.ko geregelt. Hier nun liegt das Problem meines Ipox-Boards, dazu später mehr. Zunächst einmal meine CPUID:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 9
model name : Mobile Genuine Intel(R) processor 1600MHz
stepping : 5
cpu MHz : 1594.975
cache size : 1024 KB
Hier sieht man anhand meines 1.6 GHz Banias Prozessors die CPU Infos. Der "model name" ist allerdings nicht korrekt. Beim Laden des Moduls speedstep-centrino.ko kommt dann folgende Fehlermeldung:
speedstep-centrino: no support for CPU model "Mobile Genuine Intel(R) processor 1600MHz": send /proc/cpuinfo to Jeremy Fitzhardinge <jeremy@goop.org>
Ich habe dann einmal ein wenig im Source-Code speedstep-centrino.c gewühlt:
#define _BANIAS(cpuid, max, name) \
{ .cpu_id = cpuid, \
.model_name = "Intel(R) Pentium(R) M processor " name "MHz", \
.max_freq = (max)*1000, \
.op_points = banias_##max, \
}
if (model->cpu_id == NULL) {
/* No match at all */
printk(KERN_INFO PFX "no support for CPU model "%s": "
"send /proc/cpuinfo to " MAINTAINER "\n",
cpu->x86_model_id);
return -ENOENT;
}
Es liegt also an einer falschen "model name", dass auf meinem Ipox-Board kein Speedstep unterstützt wird!

Das ganze liegt mit hoher Wahrscheinlichkeit an einem zu alten oder fehlerhaften microcode, der ins BIOS integriert wurde. Mit einem korrekten Microcode würde er die CPU als "Intel(R) Pentium(R) M processor 1600MHz" ausgeben und es gäbe keine Probleme mit dem Speedstep-Modul.

Unter Windows hat man natürlich keine Chance, das nachzuvollziehen. Um dieses Problem unter Linux zu beheben, bitte folgendermaßen vorgehen:

In /usr/src/linux/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c folgendes anpassen:

Code: Select all

.model_name = "Intel(R) Pentium(R) M processor " name "MHz", \
in
.model_name = "Mobile Genuine Intel(R) processor       " name "MHz", \

Wichtig: Unbedingt die Leerstellen (7 an der Zahl) hinter processor einhalten!

Danach die kompletten Kernelmodule neu kompilieren und das neue Modul nach /lib/modules/<kernel-version>/kernel/arch/i386/kernel/cpu/cpufreq/ kopieren. Mit modprobe oder insmod Modul laden und mit dmesg kontrollieren, dass es hierbei keine Probleme gab.

/edit: Das Problem liegt jetzt definitiv nicht am Board oder Microcode sondern an der CPU selber. Nach intensivem Chat mit The Mad von x86-secret, sieht es folgendermaßen aus:
A: There is, again, *NO* relation between microcode and the name displayed !

Q: Ah, I didn't know. I thought the string is extracted from microcode? So, the name displayed depends on what?

A: Returned directly by the CPU.

Q: Ah, but isn't the microcode designed to update such specs and registers on each boot up (e.g. erratas)?

A: Microcode is a patch able to change the instruction path inside the pipeline or TLB settings. It can't do miracle.

Q: Did you know that some Pentium-M has been sold as "Mobile Genuine Intel(R) processor 1600MHz" instead of "Intel(R) Pentium(R) M processor 1600MHz"?

A: That's not a problem. All CPUs have differents string. I have Pentium M with "Pentium M", Celeron with "Genuine Intel", ...etc.

The fault is located in the software that was not able to support these PNS (Processor Name String)
Fazit: Der "model name" wird direkt aus den Registern der CPU gelesen. Ist diese falsch, so funktioniert das Speedstep nicht oder nicht richtig (je nach Software, die die unterschiedlichen Strings unterstützt). Es scheint, als ob es CPUs auf dem Markt gibt, die "Mobile Genuine Intel(R) processor 1600MHz" anstatt "Intel(R) Pentium(R) M processor 1600MHz" als model name tragen.

/edit 2: Ich habe dem Maintainer des Speedstep-Linux-Treibers einmal geschrieben und hier seine Antwort:
The BIOS does seem to have a role in setting that brand string, though
its unclear exactly what. People have reported updating their BIOS will
"fix" the string to what the kernel expects. Maybe Ipox have an updated
BIOS for your machine.
Das BIOS spielt also wie in meinen ersten Vermutungen eine Rolle bei der Vergabe der Strings.

/edit 3: Ich habe noch ein wenig mit dem Linux-Treiber-Entwickler geplaudert:
Well, it really is implicit. The driver writes a value into a CPU MSR
which sets the CPU's operating point; an operating point is a
voltage/frequency pair - by design, you can't really change one without
the other. The tables in the driver look like this (this is the 1.1GHz
part - there's one for each CPU speed grade):
static struct cpufreq_frequency_table banias_1100[] =
{
OP( 600, 956),
OP( 800, 1020),
OP( 900, 1100),
OP(1000, 1164),
OP(1100, 1180),
{ .frequency = CPUFREQ_TABLE_END }
};
which means:
600MHz .956v
800MHz 1.02v
900MHz 1.1v
etc

Apart from getting a meter and actually measuring the voltage, the
frequency has a 1:1 relationship with voltage.

After all, changing the frequency doesn't give you any useful power
savings; its all in the voltage change.
Beim Speedstep ist es also nicht möglich, nur die Frequenz zu ändern. Ein Frequenz-/Spannungspaar ist ein sogenannter Operation Point (OP) und diese sind immer fix miteinander gekoppelt. Hier ein Beispiel:

Code: Select all

static struct cpufreq_frequency_table banias_1600[] =
{
        OP( 600,  956),
        OP( 800, 1036),
        OP(1000, 1164),
        OP(1200, 1276),
        OP(1400, 1420),
        OP(1600, 1484),
        { .frequency = CPUFREQ_TABLE_END }
};
Die Operation Points sind dabei laut Intel fest definiert:
Intel wrote:The top and bottom modes are commonly known as high frequency mode (HFM) and low frequency mode
(LFM). These frequency and voltage operating points are stored within a read-only processor model
specific register (MSR). This MSR ensures BIOS will not allow transitions to invalid states above the HFM
maximum or below the LFM minimum. The other four operating points are stored within BIOS code, as a
drop in voltage table provided by Intel to BIOS vendors.
Ich konnte dies bei mir nun nachvollziehen:
Image
linux:/etc/init.d # powersave -l
Speed set to minimum.
linux:/etc/init.d # powersave -r
598.057556 MHz

VCore 2: +0.91 V (min = +0.00 V, max = +0.00 V)
temp1: +30°C (high = +4°C, hyst = +2°C) sensor = thermistor
temp2: +37.5°C (high = +100°C, hyst = +95°C) sensor = PII/Celeron diod


linux:/etc/init.d # powersave -f
Speed set to maximum
linux:/etc/init.d # powersave -r
1594.810547 MHz

VCore 2: +1.44 V (min = +0.00 V, max = +0.00 V)
temp1: +31°C (high = +4°C, hyst = +2°C) sensor = thermistor
temp2: +41.5°C (high = +100°C, hyst = +95°C) sensor = PII/Celeron diode
Gruß
Last edited by Franzose on 23.11.2004 - 19:32, edited 9 times in total.
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
grandmasterw
Secontighty Master
Posts: 9220
Joined: 01.07.2002 - 02:00
Location: Wien Heatsink

Post by grandmasterw »

Wie wärs, wenn du den Source mal anpasst, dass er das akzeptiert. Oder beißen sich da jetzt schon Bios und Board mit den Bezeichnungen? :rolleyes:
Aktueller Fotowettbewerb: Thema: Frühling :: Einsendeschluss: 21.6.2008 ::
Bist du ein Siegertyp? Finds raus! :: Team Tualatin
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

grandmasterw wrote:Wie wärs, wenn du den Source mal anpasst, dass er das akzeptiert. Oder beißen sich da jetzt schon Bios und Board mit den Bezeichnungen? :rolleyes:
Das Problem dabei ist, dass ich das ganze in wirklich vielen Dateien anpassen müsste und da ich kein Kernelprofi bin, weiß ich nicht, was ich mir damit wieder an anderer Stelle zerschieße! Und das kann mitunter eine Menge sein (u.a. alles was hardwarenahe Optionen angeht).

Ich bin aber mit den Experten von x86 dran und werde die Erfolge dann hier einfließen lassen.
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
Rio71
Tiefschürfender Techniker
Posts: 9923
Joined: 01.04.2002 - 02:00
Location: Residenz des Rechts
Contact:

Post by Rio71 »

dem bios allgemein dürfte es wenig ausmachen wenn der cpu-code älter oder gar nichtpassend ist.
auch im desktop interessiert es wenig ob nen mobile drinn läuft oder net.
wird wohl also doch nen softwareproblem sein.

bin übrigens grad am knoppix saugen, das erste war allerdings kaputt. :rolleyes:

- Image SMPS ; PWM ; BUCK ; BOOST ; SEPIC basteln... :: KHV basteln... ; E85 im E34 Image
- Image P4 2.8C @ 3208 (SL6Z5) :: IHS plan :: 1,600V wakü :: 4x256MB BH-5 DDR401 2-2-2-6 :: IS7-E , mod
       R 8500 @ 295/295--> DVI --> EIZO 15" TFT :: CMI 8738/PCI-6ch-LX :: T7K250
       LG GSA-H10N :: Blue Storm II 350 :: CS-601 :: T-DSL 3Mbit :: 98SE/XP :: Details
- Image P4 2.4C @ 3350 (SL6Z3) :: 1,55V :: Alpha PAL8942 :: DDR480 2,5-2-2-6 :: IC7 , mod
- Image P4 2.4B @ 3150 (SL6RZ) :: 1,65V MCX4000 + 90'er :: DDR466 2-2-2-5-infinite-64µs :: 4GEA :: IHS off
- Laptop PIII 700@700 (100FSB/440BX) :: 256MB :: 18Gig Toshiba :: 4MB ATI :: 14,1" TFT :: Win98SE
* Fußnote: 90% aller Computerprobleme findet man zwischen Stuhl und Tastatur.  ;-)              
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

Rio71 wrote:dem bios allgemein dürfte es wenig ausmachen wenn der cpu-code älter oder gar nichtpassend ist.
auch im desktop interessiert es wenig ob nen mobile drinn läuft oder net.
wird wohl also doch nen softwareproblem sein.

bin übrigens grad am knoppix saugen, das erste war allerdings kaputt. :rolleyes:
Ich habe nach einem kleinen Chat mit dem x86-chief ein wenig mehr erfahren und oben geupdatet!

/knoppix: sehr gut. ;)
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
Rio71
Tiefschürfender Techniker
Posts: 9923
Joined: 01.04.2002 - 02:00
Location: Residenz des Rechts
Contact:

Post by Rio71 »

Fazit: Der "model name" wird direkt aus den Registern der CPU gelesen.
.. steinalte erkenntnis..., denn im postscreen steht auch im desktop-board "mobile".. :D

meiner heißt übrigens auch so wie obiges.. processor klein geschrieben
Intel(R) Pentium(R) M processor 1600MHz

- Image SMPS ; PWM ; BUCK ; BOOST ; SEPIC basteln... :: KHV basteln... ; E85 im E34 Image
- Image P4 2.8C @ 3208 (SL6Z5) :: IHS plan :: 1,600V wakü :: 4x256MB BH-5 DDR401 2-2-2-6 :: IS7-E , mod
       R 8500 @ 295/295--> DVI --> EIZO 15" TFT :: CMI 8738/PCI-6ch-LX :: T7K250
       LG GSA-H10N :: Blue Storm II 350 :: CS-601 :: T-DSL 3Mbit :: 98SE/XP :: Details
- Image P4 2.4C @ 3350 (SL6Z3) :: 1,55V :: Alpha PAL8942 :: DDR480 2,5-2-2-6 :: IC7 , mod
- Image P4 2.4B @ 3150 (SL6RZ) :: 1,65V MCX4000 + 90'er :: DDR466 2-2-2-5-infinite-64µs :: 4GEA :: IHS off
- Laptop PIII 700@700 (100FSB/440BX) :: 256MB :: 18Gig Toshiba :: 4MB ATI :: 14,1" TFT :: Win98SE
* Fußnote: 90% aller Computerprobleme findet man zwischen Stuhl und Tastatur.  ;-)              
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

Rio71 wrote:
Fazit: Der "model name" wird direkt aus den Registern der CPU gelesen.
.. steinalte erkenntnis..., denn im postscreen steht auch im desktop-board "mobile".. :D
Ok, für mich war das neu, dachte das wird vom Mobo zugeordnet... ;)

/update: Und wie man jetzt sieht, war das auch nicht falsch!!! (s.o.)
Rio71 wrote:meiner heißt übrigens auch so wie obiges.. processor klein geschrieben Intel(R) Pentium(R) M processor 1600MHz
Tja, mit Deinem wird Speedstep dann auf Anhieb laufen, mit meinem leider nicht. Da stehen mir wohl wahre Patchorgien ins Haus.
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

So, habe mal die neuesten Erkenntnisse aktualisiert.

Speedstep rockt..... :prost:
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
Gnubbel
Ruler von de Familie
Posts: 134
Joined: 14.09.2004 - 16:27
Location: München

Post by Gnubbel »

Diese Operation Point (OP) sind die fest im Processor / Chipsatz / Bios festgelgt. Oder kann man sich einfach da neue Pärchen definieren?
Ich weiß mein Computer ist alt, aber ich mag das Summen der Röhren.
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

Gnubbel wrote:Diese Operation Point (OP) sind die fest im Processor / Chipsatz / Bios festgelgt. Oder kann man sich einfach da neue Pärchen definieren?
Intel wrote:The top and bottom modes are commonly known as high frequency mode (HFM) and low frequency mode
(LFM). These frequency and voltage operating points are stored within a read-only processor model
specific register (MSR). This MSR ensures BIOS will not allow transitions to invalid states above the HFM
maximum or below the LFM minimum. The other four operating points are stored within BIOS code, as a
drop in voltage table provided by Intel to BIOS vendors.
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
User avatar
Herr Jeh
Schihaserlschürzenjäger
Posts: 3158
Joined: 07.02.2004 - 02:03
Location: deep Franconia

Post by Herr Jeh »

samma Franzose:

welchen Kernel benutztn du?
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

Herr Jeh wrote:samma Franzose:

welchen Kernel benutztn du?
2.6.8 ....den Standard-SuSE-9.2-Kernel
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
User avatar
Herr Jeh
Schihaserlschürzenjäger
Posts: 3158
Joined: 07.02.2004 - 02:03
Location: deep Franconia

Post by Herr Jeh »

k Danke.

Lief das mit Suse 9.2 eigtl. Out-of-the-box?

Ich hab aufm Noti Mandrake 10.1. und musste da noch einiges nachkonfiggen, hat aber auch nen älteren Kernel.
User avatar
Franzose
Oma von Admin
Posts: 816
Joined: 26.01.2003 - 17:56
Location: Hanovre-Brunswick
Contact:

Post by Franzose »

Herr Jeh wrote:Lief das mit Suse 9.2 eigtl. Out-of-the-box?
Mit dem Ipox nicht, da wie oben beschrieben, das BIOS den falschen model name zurückmeldet.

Mit dem DFI und dem AOPen ist das aber kein Problem.
Server: Intel Pentium-M 1.60 GHz on DFI i855GME-MGF, 1 GB DDR-333 Kingston ValueRam, Yeon Yang 0420 Cube
Gaming: Intel Pentium-M 1.40GHz @ 1,87GHz on ASUS P4GPL-X, 512 MB DDR-433 Kingston HyperX, GeForce 6800GT, Lian LI PC-62
HTPC: Intel Pentium-M 1.50 GHz [passive] on Ipox 4MTI2H, 512 MB DDR-333 Infineon 3rd, Antec Aria Mini-Cube, VDR with dual DVB-T/-C
Post Reply