Petit guide sur l'économie d'énergie d'un processeur Athlon

Version française du Athlon Powersaving HOWTO

Adaptation française : Fanny Schertzer

Première adaptation française : Mathieu Pillard

Relecture de la version française : Alice Martin

Préparation de la publication de la v.f. : Jean-Philippe Guérard

2003-10-04

Historique des versions
Version 1.1.0.fr.1.02004-01-07FS, initiales_du_relecteur, JPG
Adaptation française de la version publiée, basée sur le travail préliminaire de Mathieu Pillard
Version 1.1.02003-10-04DN
Des tas de nouveaux liens et informations
Version 1.022003-08-29DN
Nouveau site, nouvelle adresse mail -> mise à jour des liens !
Version 1.012003-07-09DN
Correction de bug ! le bidouillage en ligne de commande du jeu de composants AMD était faux !
Version 0.08.fr.1.02003-01-23MP
Adaptation française d'une version préliminaire de ce document

Résumé

Comment configurer la fonction d'économie d'énergie des processeurs Athlon, Duron et Athlon XP sur certains jeux de composants et cartes mères.


Table des matières

1. Introduction
1.1. Bases du mode économie d'énergie de l'Athlon
1.2. Copyright et licence
1.3. Disclaimer
1.4. Commentaires
1.5. Nouvelles versions de ce document
2. Les différentes approches
2.1. Le bidouillage en ligne de commande
2.2. Le logiciel Athcool
2.3. Mise à jour du BIOS
2.4. Mon correctif noyau
2.5. La solution LVCool
2.6. Le programme FVCool
2.7. Économie d'énergie AMD 760MP
3. Quoi d'autre ?
3.1. Comment tester le bon fonctionnement
3.2. Bugs et problèmes connus
3.3. À faire
3.4. Traductions

Dans ce chapitre, j'exposerai différentes manières de parvenir au même but : économiser de l'énergie sur votre système Athlon. L'approche que je recommande actuellement est d'employer le « bidouillage en ligne de commande », car le correctif noyau est obsolète et ne sera plus développé à l'avenir et le correctif « LVCool » ne supporte qu'une seule famille de jeux de composants. Le programme athcool semble bon, mais je ne l'ai pas testé personnellement.

Presque toutes les approches exposées vont configurer le bit «  Disconnect enable when STPGNT detected » sur le pont nord de la carte-mère. Tout le reste du travail est fait par le sous-système ACPI du noyau qui envoie un signal STPGNT au processeur lorsqu'il entre en mode acpi-c2 idle.

Si votre noyau est compilé sans support de l'ACPI, vous devez activer cette option dans le menu de configuration du noyau et recompiler votre nouveau noyau. Les option ACPI se trouvent sous General Setup+Power Management SetupACPI. Il vous faudra au moins activer les options suivantes : ACPI Bus Manager, System et Processor.

Ou, pour le nouveau noyau 2.4.22 : General Setup+ACPI Support. Vous devez au moins activer l'option suivante : Processor.

Certains jeux de composants supportent également un STPGNT si un signal HLT est détecté. Ces cartes mères ne nécessitent pas d'activer l'ACPI ! Je cherche d'ailleurs des informations sur les cartes-mères nécessitant ou non l'ACPI. Si vous l'avez l'avez testé sur votre propre carte-mère, merci de m'envoyer un courrier électronique (voir Section 3.1, « Comment tester le bon fonctionnement »).

Pour utiliser le bidouillage en ligne de commande, vous devez normalement activer l'ACPI dans le noyau, à moins que ce ne soit déjà le cas. Il n'est pas nécessaire de redémarrer pour activer l'économie d'énergie. Vous pouvez l'activer/désactiver depuis un terminal, grâce aux commandes suivantes :

sur les cartes KT133/133A, KX133, KL/KLE133, KM/KN133, … : (nécessitent d'activer l'ACPI)

activer : setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80)))

désactiver : setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f)))

sur les cartes KT266/266A/333, KM266/333, … :

activer :

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02)))

désactiver :

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd)))

sur la carte KT400 :

activer :

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02)))

désactiver :

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd)))

sur les cartes SIS730/733 : (expérimental ! merci de m'indiquer si cela fonctionne chez vous)

activer : setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01)))

désactiver : setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe)))

sur les cartes SIS735/740/745/746/755 :

activer : setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0001)))

désactiver : setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffe)))

sur Nforce :

activer :

setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06)))

setpci -v -H1 -s 0:0.0 6D=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6D) | 0x80)))

désactiver :

setpci -v -H1 -s 0:0.0 E4=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) &amp 0xf9)))

sur Nforce2 : (fonctionne sans activer l'acpi)

activer : setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10)))

désactiver : setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef)))

sur AMD751 et AMD760/761 :(works without acpi enabled)

activer : setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x06)))

désactiver : setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xf9)))

Mon correctif est basé sur un autre correctif (de Jan Niehusmann) que j'ai trouvé sur Newsnet. Je l'ai modifié pour qu'il supporte également le jeu de composants KT266/266A. D'ailleurs, mon correctif fait le même travail que le bidouillage en ligne de commande, la seule différence est que cela se passe à présent à l'intérieur du noyau. C'est pour cela que je conseille la ligne de commande, car c'est vraiment simple à réaliser.

Procédure 1. Bon… maintenant, voilà comment appliquer le correctif étape par étape :

  1. D'abord, vous devez télécharger le correctif :

    Correctif pour le noyau 2.4.17

    Correctif pour le noyau 2.4.21 (merci à Thomas Reinhardt d'avoir réalisé le portage pour le noyau 2.4.21)

  2. Connectez-vous en root

  3. cd /usr/src

  4. Appliquez le correctif : cat $chemin-du-correctif/amd_cool.diff | patch -p0

  5. cd linux

  6. Compilez votre nouveau noyau.

  7. Redémarrez en prenant soin d'entrer amd_disconnect=yes au prompt de démarrage. C'est nécessaire à cause de bugs connu du processeur Athlon qui peuvent causer des problèmes sur plusieurs cartes. Testez le correctif. S'il fonctionne, ajoutez l'option amd_disconnect=yes au fichier /etc/lilo.conf.

LVCool est un portage du programme Windows VCool. Il ne supporte que les jeux de composants KT133/133A et KX133. Je ne peux pas fournir de support sur LVCool. Vous pouvez le télécharger ici. Cette solution nécessite de compiler l'ACPI dans le noyau.

Vous trouverez ici un autre programme d'économie d'énergie qui supporte plusieurs jeux de composants. Je ne l'ai pas testé mais j'ai entendu dire qu'il fonctionne. Essayez… Un logiciel supplémentaire est fourni en même temps pour employer les senseurs de certaines cartes-mères (comme le paquetage lm-sensors).

Il existe un module du noyau qui active l'économie d'énergie du jeu de composants multiprocesseur 760MP. Vous pouvez le trouver ici. Je ne sais pas s'il fonctionne bien, mais j'ai reçu au moins un mail d'une personne me confirmant son bon fonctionnement chez lui. Essayez.

Les processeurs Athlon/Duron sont affectés de deux bugs connus. Ils portent les numéros 11 et 14 dans le AMD Athlon Processor Revision Guide. Il semble que l'Athlon XP est sensiblement moins affecté par ces bugs. Donc, si vous avez un Athlon XP, vous faites partie des veinards (comme moi).

Les bugs peuvent causer les problèmes suivants :

Une mise à jour du BIOS peut parfois résoudre des problèmes (en particulier concernant le bug 11, qui pourrait être causé par le BIOS). Mais d'après ce que j'en sais, cela ne concerne que peu de cartes.

Pour la carte Asus A7V133-C, il est connu que l'option du BIOS PCI master read caching résout la plupart des problèmes lorsqu'elle est activée. Vérifiez si votre BIOS dispose d'une telle fonction.

Il est également connu que sur certaines cartes, l'option du BIOS Delayed Transaction résout certains problèmes. Vous pouvez tenter le coup sur votre matériel.

[Attention]Attention

Sur les cartes équipée de KT133A, cela pourrait activer le fameux bug VIA-Southbridge !

Vu sur Newsnet à propos de la carte Asus A7V :

Il y a d'autres sources de problèmes :

Si vous rencontrez des problèmes mineurs en activant l'économie d'énergie, mais désirez tout de même l'utiliser, un bon compromis est de l'activer par défaut et de le désactiver lorsque vous voulez écouter de la musique, regarder la télévision, …