[PATCH] Athlon und Opteron Temperatursensoren unter 7.0 auslesen

Yamagi

Possessed With Psi Powers
Teammitglied
In FreeBSD 8.0-CURRENT gibt es seit einiger Zeit einen Treiber, mit dem man die internen Sensoren von AMDs K8, K9 und K10 Prozessoren auslesen kann. Unabhängig vom Mainboard. Ich habe diesen Treiber auf FreeBSD 7.0 zurückportiert, fall ihn jemand nutzen möchte: http://deponie.yamagi.org/freebsd/k8temp/k8temp_7.0_190508.tar.bz2

Einfach auspacken, in das Verzeichnis "k8temp" wechseln und per "make" das Modul bauen. Dafür müssen die Kernelsourcen installiert sein. Anschließend kann man es per kldload(1) laden. Es erscheinen einige neue sysctl:
Code:
dev.k8temp.0.%desc: AMD K8 Thermal Sensors
dev.k8temp.0.%driver: k8temp
dev.k8temp.0.%parent: hostb3
dev.k8temp.0.sensor0.core0: 38
dev.k8temp.0.sensor0.core1: 36
dev.k8temp.0.sensor1.core0: 38
dev.k8temp.0.sensor1.core1: 38
dev.k8temp.1.%desc: AMD K8 Thermal Sensors
dev.k8temp.1.%driver: k8temp
dev.k8temp.1.%parent: hostb7
dev.k8temp.1.sensor0.core0: 39
dev.k8temp.1.sensor0.core1: 38
dev.k8temp.1.sensor1.core0: 39
dev.k8temp.1.sensor1.core1: 39
 
Hallo,

Wow danke für die Arbeit, werde ich zuhause mal testen (zumindest solange ich noch nicht vollständig auf Mac migriert habe)

Gruss TODuke
 
Ach ja, die Angaben sind in Celsius. Bevor noch eine PN kommt. Aber mal ehrlich, Kelvin wären ein wenig kühl und Fahrenheit ebenfalls. Aber gerade die Kelvin wären gut zum Übertakten. ;)
 
Die Kelvin wären dann bei 272,3+XY°C also bei 30°C sind es 302,3°K. :)

Vorn Kopp klatsch...

Klar :D:D:D 30 Kelvin sind natürlich sehr gut zum übertakten :D
 
Code:
dev.k8temp.0.sensor0.core0: 28
dev.k8temp.0.sensor0.core1: 32
dev.k8temp.0.sensor1.core0: 29
dev.k8temp.0.sensor1.core1: 29

SInd die Sensoren redundant ? oder eine andere Zwackelei?

Danke für den Port !
 
Nein, du hast vier Sensoren auf der CPU. In jedem Kern zwei, daher gibt er vier Werte aus. Die liegen ein paar Millimeter auseinander, daher können sie alle unterschiedliche Werte liefern.
 
Nice,
grade getestet. Tut wie ne 1.

30K und Overclocking? Irgendwann ists der Hardware auch zu kalt ;-) Eine Core2 hat z.B. sone art Coldbug ab -130 Celsius.
 
Geil, jetz müsste man sich noch die genaue Position der vier Sensoren besorgen und dann bastelt man sich son Desklet, welches mit sonem geilen Foto vom Core und so Zeige-Linien und ner variablen rötlichen Einfärbung die haargenauen Temps an den vier Positionen anzeigt, machen. :D
 
Hmm, sollte nicht immer die höhere Temperatur von den zwei Sensoren in einem Core als die overall Temp benutzt werden?

Code:
dev.cpu.0.temperature: 46
dev.cpu.1.temperature: 46 [COLOR="Blue"]<==[/COLOR]
dev.k8temp.0.%desc: AMD K8 Thermal Sensors
dev.k8temp.0.%driver: k8temp
dev.k8temp.0.%parent: hostb3
dev.k8temp.0.sensor0.core0: 46
dev.k8temp.0.sensor0.core1: 49 [COLOR="Red"]<==[/COLOR]
dev.k8temp.0.sensor1.core0: 46
dev.k8temp.0.sensor1.core1: 46
 
In FreeBSD 8.0-CURRENT gibt es seit einiger Zeit einen Treiber, mit dem man die internen Sensoren von AMDs K8, K9 und K10 Prozessoren auslesen kann. Unabhängig vom Mainboard.

Hm, das will bei mir nicht. Weder auf dem Phenom I, noch auf dem Phenom II.
Ich hab beides jetzt unter 7.1 probiert. Nachladen per kldload und direkt im Kernel via "device k8temp", wobei nachladen per kldload keine Meldung ausspuckt, sondern sauber zum Prompt zurückkehrt.
In beiden Fällen ergibt
sysctl -a | grep k8
genau nichts. Muss ich dafür noch irgendetwas nachladen?
Code:
CPU: AMD Phenom(tm) II X4 940 Processor (3010.17-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x100f42  Stepping = 2
  Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x802009<SSE3,MON,CX16,<b23>>
  AMD Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
  AMD Features2=0x37ff<LAHF,CMP,SVM,ExtAPIC,CR8,<b5>,<b6>,<b7>,Prefetch,<b9>,<b10>,<b12>,<b13>>
  Cores per package: 4
Edith hat noch eingeworfen, dass ich X86_64 fahre...
 
Also der k8temp im Kernel reicht aus. Aber er funktioniert derzeit nur auf Phenom 1 CPUs - zumindest hier, wobei ich leider auch nur ein System habe. Meine Phenom 2 zeigen je nach Board nur Müll an (256°C) oder er findet erst gar keine Sensoren. Gleiches gilt für Shanghai-Opterons. Das ganze schaut dann so aus (Zweimal Opteron 265):
Code:
yamagi@screw:ttyp3 ...msdnaa/winxp: sysctl -a | grep k8             [12:08:27]
dev.k8temp.0.%desc: AMD K8 Thermal Sensors
dev.k8temp.0.%driver: k8temp
dev.k8temp.0.%parent: hostb3
dev.k8temp.0.sensor0.core0: 39
dev.k8temp.0.sensor0.core1: 39
dev.k8temp.0.sensor1.core0: 39
dev.k8temp.0.sensor1.core1: 38
dev.k8temp.1.%desc: AMD K8 Thermal Sensors
dev.k8temp.1.%driver: k8temp
dev.k8temp.1.%parent: hostb7
dev.k8temp.1.sensor0.core0: 40
dev.k8temp.1.sensor0.core1: 39
dev.k8temp.1.sensor1.core0: 40
dev.k8temp.1.sensor1.core1: 38

und

Code:
root@screw:ttyp3 ~> dmesg | grep k8                                 [12:12:37]
k8temp0: <AMD K8 Thermal Sensors> on hostb3
k8temp1: <AMD K8 Thermal Sensors> on hostb7
 
Schade.
Aber Danke. Ich hab grad mal in den Code geguckt, das sieht ziemlich einfach aus. Vielleicht hab ich mal die Musse die passenden Adressen da rein zu frickeln...
 
Es gibt eine Lösung im Ansatz. Mag auf einigen Maschinen funktionieren:
Date: Sun, 1 Mar 2009 23:43:28 +0900
From: Norikatsu Shigemura <nork@FreeBSD.org>
To: Rui Paulo <rpaulo@FreeBSD.org>
Cc: freebsd-current@FreeBSD.org, Norikatsu Shigemura <nork@FreeBSD.org>
Subject: Re: ktemp(8) on Phenom II
X-Mailer: Sylpheed 2.6.0 (GTK+ 2.14.7; i386-portbld-freebsd8.0)

Hi Rui!

On Sun, 1 Mar 2009 13:48:28 +0000
Rui Paulo <rpaulo@freebsd.org> wrote:
> > chip=0x12031022 rev=0x00 hdr=0x00
> > vendor = 'Advanced Micro Devices (AMD)'
> > device = '(Family 10h) Athlon 64/Opteron/Sempron
> > Miscellaneous Control'

> Try replacing 0x1103 by 0x1203 in k8temp.c.
> Does that work?

I got following results:

$ sysctl -a | fgrep -e k8 -e temperature
dev.cpu.0.temperature: 143
dev.cpu.1.temperature: 143
dev.k8temp.0.%desc: AMD K8 Thermal Sensors
dev.k8temp.0.%driver: k8temp
dev.k8temp.0.%parent: hostb4
dev.k8temp.0.sensor0.core0: 143
dev.k8temp.0.sensor0.core1: 143
dev.k8temp.0.sensor1.core0: 143
dev.k8temp.0.sensor1.core1: 143

Accordingly BIOS reports CPU temperature is 32-36 celsius
(=89-97 fahrenheit). I don't know what is '143'.
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
 
Es gibt eine Lösung im Ansatz. Mag auf einigen Maschinen funktionieren:

Danke :-)
Sorry, grad wenig Zeit, aber der Fehler, warum die Temperatur da falsch angezeigt wird, liegt in der Berechnung in Zeile 312.
Dort heisst es:
Code:
temp = ((temp >> 16) & 0xff) - k8temp_MINTEMP;

Müsste beim k10, aber so aussehen:

Code:
temp = ((temp >> 21) * 125);

Vielleicht kannst du ja was damit anfangen. Ansonsten teste ich mal nächstes WE damit rum.
Aber ich denk, du bist nah am Thema und wirst schon sehen, was ich meine...
 
So, Rui Paolo hat aktualisiert, ich daher auch. Das hier ist eine neue Version, sie heißt nun "amdtemp" statt "k8temp", da sie eine Reihe mehr CPUs unterstützt. Nutzer von -CURRENT sollten auf ein aktuelles Updaten, sie erhalten dann den Treiber automatisch. Alle anderen bauen wie gehabt das Modul und laden es anschließend.

Unterstützte CPUs:
- AMD K8 -> Athlon64, Sempron64, Opteron bis 252, K8-basierende Sempron
- AMD K8l -> Mobile-Athlon64, Turion
- AMD K9 -> Athlon X2, Opteron von 265 bis 285, Turion Ultra
- AMD K10 -> Phenom I (vierstelliger Modellcode), Athlon X2 6xxx und 7xxx, Opteron "Barcelona"
- AMD K10h -> Phenom II (zweistelliger Modellcode), Opteron "Shanghai", der kommende neue Mobilprozessor

Die CPus haben unterschiedliche Anzahl an Sensoren. Einige zwei pro Kern, andere nur 2 insgesamt. Die Sensoren sind im Verhältnis zum Die recht klein, es können u.U an anderen Stellen auf diesem noch höhere Temperaturen entstehen! Auch wenn der Treiber die CPU direkt ausließt kann u.U. das BIOS die Werte zerdeppern. Sie sind dann sehr hoch oder sehr niedrig!

Link: http://deponie.yamagi.org/freebsd/k8temp/amdtemp-13.03.2009.tar.bz
 
Danke, funktioniert mit nem Phenom II X4 einwandfrei.
Die maximale Kerntemperatur der k10 wird von AMD aber aus diesem Grund schon niedriger angesetzt - 61°C, damit es ein wenig Sicherheit bei der Differenz gibt.

Huh, ich hab das Dingen grad mal unter Strom gesetzt und bin auf bis zu 59°C gekommen. Da muss ich noch ein wenig an der Kühlung schrauben. Die Dinger heizen sich teilweise innerhalb ner Sekunde um 3°C hoch....
 
Wobei AMD dort auch - wohl aufgrund von Garantieansprüchen - sehr konservativ ist. Sowohl Athlons als auch Opterons machen problemlos 85°C Dauerbetrieb mit. In den ersten Integrations-Datenblättern für Systembuilder war für den K10 sogar noch eine Spitzentemperatur von 110°C angegeben, was dann aber sehr schneller von Revision zu Revision sank, bis in der Verkaufversion die 61°C draus geworden waren.
 
Ja, ich war auch erstaunt, als die Dinger rauskamen.
Wobei es allerdings auch auf die Art der Belastung ankommt.
Hohe Temperaturschwankungen innerhalb des DIE sind ähnlich tödlich, wie eine gleichmässig viel zu hohe Temperatur.
Wenn so ne Kiste bei nem Buildworld mit 16 Freds mal 70° bekommt, wird sie das sicher nicht killen...
Trotzdem, cool find ich cool, vorm Sommer muss da wohl noch was passieren...
 
Zurück
Oben