[Tuto] Turionpowercontrol : Overclock D'un Apu Amd A10 Engineering Sample Sous Linux


DISCLAIMER : Les manipulations décrites ci-dessous sont experimentales et peuvent endommager votre materiel de façon irreversible !
En connaissance de cause ni P4G ni moi-même ne pourront être tenus responsables des éventuels dégradations de votre materiel suite à ces manipulations.


Bonjour à tous,

Je vous présente aujourd’hui un logiciel fort sympathique : TurionPowerControl.
Ce logiciel comme son nom l’indique à pour vocation de contrôler les performances des CPU Mobiles de la gamme Turion d’AMD.

Il s’avère qu’il permet bien plus ! Et entre autre chose de gérer (de façon plus ou moins complète) les états de performances “p-states” des CPU mobile ou non jusqu’à la gamme Richland d’APU AMD.Vous pourrez télécharger la Version 0.44 rc2 à l’adresse suivante :https://code.google.com/p/turionpowercontrol/downloads/list
Avant de commencer il est important de désactiver l’option Powernow dans le Bios et de s’assurer que Linux utilise bien HPET à la place de TSC qui n’est plus fiable une fois l’APU OC sur le p-state p0.

MAJ : Je vous conseil d’utiliser la**révision 204 ou supérieur **de TPC pour avoir les bons voltages

Récupérer les sources de TPC pour avoir les bons voltages et les compiler.

Pour cela, on récupère les dernières sources via subversion :

$ svn checkout http://turionpowercontrol.googlecode.com/svn/trunk/ turionpowercontrol-read-only

Pour compiler TPC vous aurez besoin des packages build-essential et libncurses5-dev

Ensuite on se rend dans le répertoire “turionpowercontrol-read-only” fraîchement récupéré.

$ cd turionpowercontrol-read-only

Voilà, plus qu’à compiler :

$ make

Et on obtient le binaire TurionPowerControl


1ère étape : Chargement des modules MSR et CPUID

TurionPowerControl a besoin des modules msr et cpuid.

$ sudo modprobe msr
$ sudo modprobe cpuid

2ème étape : Obtenir la liste des p-states disponibles

TPC doit toujours être lancé avec les droits super utilisateurs (admin ou root)
Pour obtenir la liste des p-states et d’autres infos très utiles on commence par faire :

$ sudo ./TurionPowerControl -l

On obtient donc :

  • Le nombre de nœuds : 1
  • Le nombre de cœur : 4
  • Le nombre de p-states : 7, numérotés de 0 à 6
  • Le nombre de boost states (p-states en mode turbo ou psmax) : 3, numérotés de 0 à 2.
  • Et le tableau de p-states pour chaque cœur.

Les Vcores pour chaque p-states ne sont pas toujours exactes suivant le type de CPU, APU.
Ici pour mon APU A10-5750m ES le p-states pb1 affiche 0.8250 V, alors qu’en faites il s’agit de 1.188 V !!!

MAJ : Depuis la révision 204 ,TPC interprète correctement les vcores des APU Richland et Trinity.
Notez bien le VCore pour chaque numéro de p-state car il faudra s’en servir comme référence pour les modifier.


3ème étape : Descendre au 2eme p-state non boosté et désactivé les boost states

L’APM empêche la modifications des fréquences des p-states au dessus de leur valeur d’origine. Et comme celui-ci est lié au Turbo Core, on va donc le désactivé et perdre les 3 premiers p-states dit “Turbo”.
Mais pour éviter un freeze et déclencher proprement une transition, on force les cores à passer au p-state 4 soit le p-state 1 non turbo (Faut suivre …) on se garde le p-state 3 pour l’OC.

$ sudo ./TurionPowerControl -fo 1
$ sudo ./TurionPowerControl -boostdisable

Pour revérifier :

$ sudo ./TurionPowerControl -l

Voilà, les p-states 0 à 2 (Pb0,Pb1 et Pb2) sont bien désactivés, il ne reste plus que les p-states 3 à 6 (p0, p1, p2 et p3)


4ème étape : Modifier le p-state 3 pour l’OC

On va pouvoir modifier ce p-state et ainsi augmenter la fréquence et le vcore …
Il ne vaut mieux pas trop dépasser les 1.30V sur mon APU !A bon entendeur je me lance :

$ sudo ./TurionPowerControl -set ps 3 freq 3600 vcore 1.1875

Le p-state 3 est prêt y’a plus qu’à forcer les cœurs sur ce p-state :

$ sudo ./TurionPowerControl -fo 0

W00t ! un petit overclock @3.6Ghz sur les 4 cœurs, sachant que le plus haut mode turbo sur cet APU en version OEM est à 3.5 GHz sur 2 cœurs seulement ou 3.2 GHz sur les 4 cœurs.


5ème étape : Modifier le PopDownPstate pour dépasser le TDP

Quand l’APU excède les 35 Watts de TDP, il force les cœurs à passer dans l’état C6 par sécurité.
L’état C6 ne change pas le Vcore mais seulement la fréquence du cœur qui tombe alors à 800 MHz rendant tout OC impossible.

Pour contourner ce problème, la solution est de modifier le PopDownPstate et le HwPstateMaxValpour qu’ils correspondent au p-state p0 via setpci.

D’abord on recupère 00:18.3 DC car les 2 derniers chiffres peuvent variés d’une machine à l’autre.

$ sudo setpci -s 00:18.3 DC.l

J’obtient00a75337** les 2 derniers chiffres en bleu doivent rester les mêmes. Seul le 6eme en rouge doit changer.**

$ sudo setpci -s 00:18.3 A8.l=70000000
$ sudo setpci -s 00:18.3 DC.l=00a75337

Désormais les 4 cœurs sont bloqués sur le p-state p0 quoi qu’il arrive.
Le problème est que pour modifier la fréquence à nouveau, il faut d’abord changer de p-state, sinon la modification ne sera pas prise en compte !
Il faut donc débloquer en remettant les valeurs d’origines :

$ sudo setpci -s 00:18.3 A8.l=f0000000
$ sudo setpci -s 00:18.3 DC.l=00a75737

puis repasser en p-state p1 :

$ sudo ./TurionPowerControl -fo 1

On pousse le p-state p0 à 3.8 GHz avec 1.2375V

$ sudo ./TurionPowerControl -set ps 3 freq 3800 vcore 1.2375

On repasse en p-state p0 :

$ sudo ./TurionPowerControl -fo 0

Et on re-bloque :

$ sudo setpci -s 00:18.3 A8.l=70000000
$ sudo setpci -s 00:18.3 DC.l=00a75337

Inutile de dire qu’il vaudra mieux scripter tout ça pour se simplifier la vie. :roll_eyes:


Et si j’ai pas un APU Engineering Sample ou un CPU AMD Débloqué ? …

Vous pouvez quand même bloquer le CPU sur un p-state boosté : soit le Pb0 ou le Pb1 (Pour l’A10 5750m ça ne marche que sur le Pb1 c.a.d @3.2Ghz sur les 4 cores).

$ sudo ./TurionPowerControl -psmax 1

Et tant qu’a faire un petit Undervolt du p-state 1 histoire de limiter la chauffe

$ sudo ./TurionPowerControl -set ps 1 vcore 1.125

Se simplifier la vie en scriptant ces operations :

Et en cadeau mon petit script perso pour oc :

#/bin/sh
echo "Setting APU @ $1 Mhz with $2 V"
if [ $1 ] && [ $2 ]
then
	sudo setpci -s 00:18.3 A8.l=F0000000
	sudo setpci -s 00:18.3 DC.l=00a75737
	sudo ./TurionPowerControl -fo 1
	sudo ./TurionPowerControl -boostdisable
	sleep 1
	sudo ./TurionPowerControl -set ps 3 freq $1 vcore $2
	sleep 1
	sudo ./TurionPowerControl -fo 0
	sudo setpci -s 00:18.3 A8.l=70000000
	sudo setpci -s 00:18.3 DC.l=00a75337
else
	echo "Missing parameters"
fi

Enregistrer sous overclock.sh
Pour l’invoquer avec un oc à 3.6 GHz avec 1.20V :

$ sh overclock.sh 3.600 1.2000

Et pour annuler l’oc un autre script qu’on enregistrera sous reset_oc.sh :

#/bin/sh
sudo setpci -s 00:18.3 A8.l=F0000000
sudo setpci -s 00:18.3 DC.l=00a75737
sudo ./TurionPowerControl -fo 1
sudo ./TurionPowerControl -boostenable
sleep 1
sudo ./TurionPowerControl -set ps 3 freq 2500 vcore 1.0000
sleep 1
sudo ./TurionPowerControl -fo 0

Que l’on invoque par exemple avant de rebooter pour éviter un freeze :

$ sh reset_oc.sh

Nice +1 ;)

Merci ^^

 

Edit : Mise à jours avec l'undervolt en plus du lock @3.2Ghz

Edit 2 : Mise à jours avec une version de TPC qui reconnait les 4 cores et permet ainsi  une méthode plus stable d'OverClocking.

 

Edit 3 : Suppression des messages retournés par les commandes pour un peu plus de lisibilité et aller directement à l'essentiel.

C'est du propre :D

 

Si j'ai besoin de passer sous Linux du à mes études j'ai une solution grace à toi :D

Un certains KaynabX était sensé faire un tuto sur l'installation de Linux sur GX60.

Je crois qu'il est toujours en construction ... :lol:

Il est plus trop actif Kayna :D

 

Mais ça va non plus je sors pas de la dernière pluie je sais installer Linux :D (heureusement d'ailleurs, c'est le centre de mes études :D) 

Je te souhaite plein de bonheur avec les pilotes Catalyst sous Linux mon chère Jiraya, ça plus le bronx avec Alsa et Pulseaudio.
Tu vas voir, c'est un pure régale.

HS On :
Si tu veux progresser un max et bien mettre les mains dans le cambouis (et savoir quasi tout configurer en ligne de commande), tu prend une bonne vieille Slackware (Le noyau linux à 23 ans, la distro Slackware en à 21) ou bien une Débian.

 

Après qu'en t'auras plus du tout de temps à passer sur la compréhension de tel ou tel fichier de config tu retourne sur une distro plus user-friendly comme Ubuntu, Mint , Mageia, Fedora, openSuse et j'en passe ...
HS Off
 

Je crois qu'un bon tutoriel sur l'installation d'une distro Linux sur GX60 ne sera pas du luxe.

 

Mettre les mains dans le cambouis : pas de distro, c'est trop simple sinon :D

J'aime bien Debian, je boss dessus :D

Maj avec la manip pour OC au delà de 3.6GHz ;) Enjoy !

 

Edit : Réorganisation des étapes.
 

Plus qu'à faire une table de conversion des vcores ou une version corrigée de TPC qui interprète correctement les vcores et je demande le Sticky ;)

 

Edit2 : Réorganisation (encore) et clarification sur les changements de fréquence consécutifs.

 

Edit3 : Modification des sources de TurionPowerControl pour obtenir et utiliser les Vcores correctes et compilation.

 

Edit 4 : Ajout des scripts pour automatiser l'oc et son annulation, et ajout de la remarque sur HPET/TSC.

 

Edit 5 : Depuis la révision 204 ,TPC supporte correctement les APU Richland et Trinity. Mise à jour du Tuto en conséquence et big-up au passage au développeur de TPC :cool: .

Edit 3 : Suppression des messages retournés par les commandes pour un peu plus de lisibilité et aller directement à l'essentiel.