Henrik Brix Andersen <[EMAIL PROTECTED]> writes:
> $ dmesg | grep coretemp
> coretemp0: <CPU On-Die Thermal Sensors> on cpu0
> coretemp1: <CPU On-Die Thermal Sensors> on cpu1
>
> $ sysctl dev.cpu.0.temperature
> dev.cpu.0.temperature: -50
>
> $ sysctl dev.cpu.1.temperature
> dev.cpu.1.temperature: -49
This means Tj(max) is not properly detected. The CPU actually reports
the temperature as a delta from the maximum rated operating temperature
in degrees Celsius; you're seeing the raw value.
Actually, the bug is easy to see:
if ((cpu_model == 0xf && cpu_mask > 3) || cpu_model == 0xe) {
msr = rdmsr(MSR_IA32_EXT_CONFIG);
if ((msr >> 30) & 0x1)
sc->sc_tjmax = 85;
} else
sc->sc_tjmax = 100;
Initializing sc->sc_tjmax to 100 before the outer if test should fix
this. Could you please test the attached patch?
> The ACPI thermal zones seem to provide much more realistic readings:
>
> $ sysctl hw.acpi.thermal.tz0.temperature
> hw.acpi.thermal.tz0.temperature: 65.0C
>
> $ sysctl hw.acpi.thermal.tz1.temperature
> hw.acpi.thermal.tz1.temperature: 67.0C
Those are not the same temperature sensors. The actual temperature in
your CPU is around 50 degrees Celsius. The ACPI thermal zones are
probably sensors on the motherboard.
DES
--
Dag-Erling Smørgrav - [EMAIL PROTECTED]
Index: sys/dev/coretemp/coretemp.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/coretemp/coretemp.c,v
retrieving revision 1.1
diff -u -r1.1 coretemp.c
--- sys/dev/coretemp/coretemp.c 15 Aug 2007 19:26:02 -0000 1.1
+++ sys/dev/coretemp/coretemp.c 15 Aug 2007 21:35:31 -0000
@@ -168,12 +168,12 @@
* The if-clause for CPUs having the MSR_IA32_EXT_CONFIG was adapted
* from the Linux coretemp driver.
*/
+ sc->sc_tjmax = 100;
if ((cpu_model == 0xf && cpu_mask > 3) || cpu_model == 0xe) {
msr = rdmsr(MSR_IA32_EXT_CONFIG);
- if ((msr >> 30) & 0x1)
+ if (msr & (1 << 30))
sc->sc_tjmax = 85;
- } else
- sc->sc_tjmax = 100;
+ }
/*
* Add the "temperature" MIB to dev.cpu.N.
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"