Summary
On AMD Ryzen AI Max+ 395 (Strix Halo, Family 1Ah Model 70h), zenpower5 detects the CPU and reports correct Tdie / Tctl / RAPL_P_Package, but the per-CCD temperatures are clearly wrong — most slots read 0.0°C, and the ones that do return a value sit at ~149°C (which is hotter than Tjmax and well above the real die temperature at idle).
Separately: the driver does not auto-bind to the PCI device at module load; manual bind via sysfs is required each boot.
System
- CPU: AMD Ryzen AI Max+ 395 w/ Radeon 8060S (Strix Halo)
- CPU family / model: 26 / 112 (i.e. 1Ah / 70h)
- Data Fabric F3 PCI ID:
[1022:12bb] at 0000:00:18.3
- Kernel:
6.17.0-22-generic (Ubuntu 25.10)
- zenpower5:
0.5.0 (master, installed via make dkms-install)
sensors output
zenpower-pci-00c3
Adapter: PCI adapter
Tdie: +39.4°C (high = +95.0°C)
Tctl: +39.4°C
Tccd1: +149.8°C
Tccd2: +0.0°C
Tccd3: +0.0°C
Tccd4: +0.0°C
Tccd5: +149.5°C
Tccd6: +0.0°C
Tccd7: +0.0°C
Tccd8: +0.0°C
RAPL_P_Package: 5.73 W
Tdie / Tctl track reality (machine is idle). The pattern — nonzero readings in slots 1 and 5, zero elsewhere — suggests the driver is stepping through 8 CCD slots assuming the Zen 2/3 layout, but Strix Halo's die topology is different (two CCDs, not eight). The ~149°C values from the "real" slots look like garbage bits rather than a valid temperature.
dmesg
[ 3.808207] zenpower: loading out-of-tree module taints kernel.
[ 327.681275] zenpower 0000:00:18.3: Detected Zen5 Strix Halo (1Ah/70h)
[ 327.681283] zenpower 0000:00:18.3: Measurement methods:
[ 327.681284] zenpower 0000:00:18.3: Power: RAPL MSRs (Package only)
[ 327.681285] zenpower 0000:00:18.3: Core voltage/current: SVI2 via SMN (addr 0x00073010, ZEN2 formula)
[ 327.681286] zenpower 0000:00:18.3: SoC voltage/current: SVI2 via SMN (addr 0x00073014, ZEN2 formula)
[ 327.681287] zenpower 0000:00:18.3: Tctl temperature: SMN register (MSR 0x59800)
[ 327.681288] zenpower 0000:00:18.3: CCD temperatures: SMN registers (base 0x00059b08, 8 CCDs)
Note the timestamp: zenpower loaded at boot (3.8s) but zenpower_probe did not run until 327s — that was when I manually ran echo 0000:00:18.3 > /sys/bus/pci/drivers/zenpower/bind. Without that manual step, the driver is registered but never binds, so sensors shows nothing from it.
k10temp is blacklisted via /etc/modprobe.d/zenpower.conf, so the device is unbound at boot before zenpower loads — the auto-bind failure is not a conflict with k10temp.
Expected
- Tccd readings either reflect real CCD temperatures, or (if per-CCD SMN layout is not known for Strix Halo) the sensors are suppressed rather than showing
0.0°C / 149°C.
- Driver auto-binds to
[1022:12bb] at module load, so sensors works on reboot without manual bind.
Notes
- SVI2 formula is flagged in the probe output as "ZEN2 formula" — Strix Halo uses SVI3, which likely also requires a different approach (mentioned in the README as not yet supported). That part is not reported in
sensors, so I can't tell if it's bogus too.
- Happy to test patches or dump SMN registers if that's helpful — let me know what would be useful.
Summary
On AMD Ryzen AI Max+ 395 (Strix Halo, Family 1Ah Model 70h), zenpower5 detects the CPU and reports correct
Tdie/Tctl/RAPL_P_Package, but the per-CCD temperatures are clearly wrong — most slots read0.0°C, and the ones that do return a value sit at ~149°C (which is hotter than Tjmax and well above the real die temperature at idle).Separately: the driver does not auto-bind to the PCI device at module load; manual
bindvia sysfs is required each boot.System
[1022:12bb]at0000:00:18.36.17.0-22-generic(Ubuntu 25.10)0.5.0(master, installed viamake dkms-install)sensorsoutputTdie / Tctl track reality (machine is idle). The pattern — nonzero readings in slots 1 and 5, zero elsewhere — suggests the driver is stepping through 8 CCD slots assuming the Zen 2/3 layout, but Strix Halo's die topology is different (two CCDs, not eight). The ~149°C values from the "real" slots look like garbage bits rather than a valid temperature.
dmesg
Note the timestamp: zenpower loaded at boot (3.8s) but
zenpower_probedid not run until 327s — that was when I manually ranecho 0000:00:18.3 > /sys/bus/pci/drivers/zenpower/bind. Without that manual step, the driver is registered but never binds, sosensorsshows nothing from it.k10tempis blacklisted via/etc/modprobe.d/zenpower.conf, so the device is unbound at boot before zenpower loads — the auto-bind failure is not a conflict with k10temp.Expected
0.0°C/149°C.[1022:12bb]at module load, sosensorsworks on reboot without manualbind.Notes
sensors, so I can't tell if it's bogus too.