k10temp: ZEN3 readings are broken
From: Gabriel C
Date: Mon Dec 21 2020 - 20:46:12 EST
Hello Guenter,
while trying to add ZEN3 support for zenpower out of tree modules, I find out
the in-kernel k10temp driver is broken with ZEN3 ( and partially ZEN2 even ).
commit 55163a1c00fcb526e2aa9f7f952fb38d3543da5e added:
case 0x0 ... 0x1: /* Zen3 */
however, this is wrong, we look for a model which is 0x21 for ZEN3,
these seem to
be steppings?
Also, PLANE0/1 are wrong too, Icore has zero readouts even when fixing
the model.
Looking at these ( there is something missing for 0x71 ZEN2 Ryzens
also ) that should be:
PLANE0 (ZEN_SVI_BASE + 0x10)
PLANE1 (ZEN_SVI_BASE + 0xc)
Which is the same as for ZEN2 >= 0x71. Since this is not really
documented and I have some
confirmations of these numbers from *somewhere* :-) I created a demo patch only.
I would like AMD people to really have a look at the driver and
confirm the changes, since
getting information from *somewhere*, dosen't mean they are 100%
correct. However, the driver
is working with these changes.
In any way the model needs changing to 0x21 even if we let the other
readings broken.
There is my demo patch:
https://crazy.dev.frugalware.org/fix-ZEN2-ZEN3-test1.patch
Also, there is some discuss and testing for both drivers:
https://github.com/ocerman/zenpower/issues/39
Best Regards,
Gabriel C