Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Dec 2019 08:09:23 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 233764] [amdtemp] does not know correct offset for AMD Family 15h (A8-7600, FX-8300, etc) Tctl
Message-ID:  <bug-233764-227-BeC74Gii2K@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-233764-227@https.bugs.freebsd.org/bugzilla/>
References:  <bug-233764-227@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D233764

Alexey Dokuchaev <danfe@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |danfe@FreeBSD.org

--- Comment #23 from Alexey Dokuchaev <danfe@FreeBSD.org> ---
Unfortunately, our amdtemp(4) driver is doing the best it can according to =
the
spec.  Starting with the Phenoms, AMD's digital sensor no longer reports an
absolute temperature value anymore, but a reading with a certain offset, wh=
ich
isn't really known; it might not even be constant per CPU type.

I believe that some proprietary tools employ certain tricks or use undocume=
nted
pieces of knowledge to make up for this, but e.g. Open Hardware Monitor uses
the same formula as FreeBSD plus allows to specify configurable "offset" wh=
ich
is zero by default: ((Tctl >> 21) & 0x7FF) / 8.0f.

That is, Tctl is a non-physical temperature on an arbitrary scale (confusin=
gly)
measured in degrees Celsius with a resolution of 1/8th degree.  AMD designed
this equation to accurately read load temperatures (45=C2=B0C+).  It has an
equational offset to determine them which equalizes at 45=CC=81=C2=B0C.  Si=
nce it's
designed for peak values and is a non-physical temperature it cannot read i=
dle
temperatures or account for ambient temperature correctly.

That's why popular tools like HWinfo64, MWmonitor, or Aida64 usually report=
 two
values: one for the socket and another for the core temperature.  The socket
value is what you should look at if you want an idea of idle temperature and
the core one for the CPU temperature under load.

I understand that it's somewhat frustrating to see BIOS and AMD Overdrive
reporting seemingly sane temperatures across the entire spectrum, but it is
most likely a cumulative reading from a number of different sensors, most of
which are out of scope of amdtemp(4) or even undocumented at all.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-233764-227-BeC74Gii2K>