Re: reading on-die temperature sensor of AMD A10 5700 processor

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

 



Thanks Clemens!

On Thu, Aug 15, 2013 at 3:55 AM, Clemens Ladisch <clemens@xxxxxxxxxx> wrote:
> On 08/14/2013 09:16 PM, Dev, Kapil wrote:
>> I got a little confused about the way temperature-computation is
>> explained on page 393. The interpretation of D18F3xA4[31:21] seems to
>> be different based on the D18F3xA4[17:16] bits.

These two bits should always be 00; Linux never tries to write the
temperature value.

I see. It means  that D18F3xA4[31:21] always denotes the Tctl temperature (control temperature). Where, Tctl <= Tmeasured <= Tctl+TmpMaxDiffUp. The value of TmpMaxDiffUp is between 0 and 9C depending on the value of two bits, D18F3xA4[6:5]. Should I check the value of these two bits, or did you already figure that out? So, line 68 is really what I should worry about: 

return sprintf(buf, "%u\n", (regval >> 21) * 125);

 I installed ubuntu 12.04.02 LTS on another hard-disk and installed lm-sensors on that. I did not install the driver from http://khali.linux-fr.org/devel/lm-sensors/drivers/k10temp/k10temp.c manually, because it was already installed in the kernel. I noticed, that the reported temperature was very erratic, changing anywhere between 3 C and 30C, even when there was no workload running on the cpu.

>> Something similar, but not exactly the same thing, is implemented in
>> k10temp.c in lines 85-90. The value (D18F3xA4[18:16])

No, this value is D18F3x64[22:16].

Sorry, it was a typo from my side. If I understand it correctly, the implementation is such that it reports following values:
1) Highest temperature = 70; due to "return sprintf(buf, "%d\n", 70 * 1000 in c-code);"
2) Critical temperature = mostly 70; due to D18F3x64[22:16]*0.5+52 (value = ((regval >> 16) & 0x7f) * 500 + 52000; in c-code), which kind of means that D18F3x64[22:16] is mostly fixed to 36?
3)  Hysteresis value: From  D18F3x64[22:16]*0.5+52 - D18F3x64[22:16]*0.5  (value -= ((regval >> 24) & 0xf) * 500; in c-code). Is the value of D18F3x64[22:16] fixed or it changes based on some condition?

 

>> is multiplied by 500 and then 52000 is added to it. While, on page
>> 393, I see <(CurTmp[10:2]*0.5)-49>.

On page 382, I see <(HtcTmpLmt*0.5)+52>.


Again, thanks a lot! As I said, I am trying to compute the temperature values as accurately as possible because my project involves calibrating the die-temperature values against other measurements

Regards,
Kapil

 

Regards,
Clemens

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux