[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#641429: /usr/bin/sensors: sensors report the wrong cpu temperature on intel atom 330



On Thu, Oct 27, 2011 at 04:41:54PM +0200, Nacho Barrientos Arias wrote:
> Hello,

Hello again,

> 
> On Thu, Sep 15, 2011 at 09:52:26AM +0100, Richard Kennedy wrote:
> > > Thanks for these informations. It looks like Tjmax is not correctly 
> > > detected for you CPU, so all temperatures are offset by a value.
> > > 
> > > It's definitely a kernel issue, so I am reassigning this bug.
> > > 
> > 
> > Thank you for looking in to this.
> > Here's the relevant bits of /proc/cpuinfo, just in case someone needs
> > this.
> 
> [...]
> 
> Any update on this?

Yep, it seems so.

It happens that modern versions of coretemp include an user parameter
to set TjMax when the module is loaded. Got mine from master, source
SHA1sum:

fba95088e2ceeecc88ba8f12cb1d47caf8fa42b2  coretemp.c 

Excerpt taken from Intel's data sheet for Atom 330 (google for
"atom-330-datasheet.pdf"):

"The processor protects itself from catastrophic overheating by use
of an internal thermal sensor. This sensor is set well above the
normal operating temperature to ensure that there are no false
trips. The processor will stop all execution when the junction
temperature exceeds approximately 125°C. This is signalled to the
system by the THERMTRIP# (Thermal Trip) pin. For termination
requirements, refer to the platform design guide."

So, compiling and loading the latest version of the module for my
current kernel (2.6.38-bpo.2-686) did the trick:

~ # rmmod coretemp
~ # insmod coretemp.ko tjmax=125
~ # sensors

[...]

coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +34.0°C  (crit = +125.0°C)                  
Core 1:      +42.0°C  (crit = +125.0°C)

Related commit:

commit a45a8c8571c0be6a6bd72ae5a14255c26b14b504
Author: Jean Delvare <khali@linux-fr.org>
Date:   Fri Sep 16 21:24:02 2011 +0200

    hwmon: (coretemp) Let the user force TjMax
    
    On old CPUs (and even some recent Atom CPUs) TjMax can't be read from
    the CPU registers, so it is guessed by the driver using a complex
    heuristic which isn't reliable. So let users who know their CPU's
    TjMax pass it as a module parameter.

Kudos to Carlos López for pointing me to the fix.

Bye,

Nacho



Reply to: