While reverse-engineering the Phoenix APU PM table, I mapped the per-core CPU temperatures on PM-table version 0x4C0007 (Ryzen 7 7840HS, "Phoenix", Zen 4 mobile). They don't seem to be mapped here (there's no 0x4C0007 pm_table_* function) nor in RyzenAdj, so sharing in case it's useful.
Finding
Per-core CPU temperatures = 8 consecutive float32 at indices [529..536] — i.e. physical core N → float [529 + N].
Verified three independent ways on a 7840HS (8 physical cores)
- Load correlation. The 8 values are °C-plausible, rise together under sustained all-core load (~45 → ~67 °C) and the hottest converges with the package Tctl (SMN
0x00059800).
- Affinity causality. Pinning a stress load to a single physical core moves only its float:
- physical core 0 → only
[529] rose (+9.4 °C; others within ±2 °C)
- physical core 4 → only
[533] rose (+7.2 °C; others within ±2.6 °C)
- Cross-check vs HWiNFO. In stable conditions, HWiNFO's
Core0..Core7 match [529..536] to within 0.4–0.5 °C, core-for-core, in the same order.
For context, the rest of 0x4C0007 (classic APU header, matches RyzenAdj)
| field |
float index |
notes |
| fast PPT |
[2] limit / [3] value |
W (value == socket power) |
| VDD TDC |
[8] limit / [9] value |
A |
| THM limit |
[16] |
100 °C |
| per-core temp |
[529..536] |
°C, this issue |
Only verified on 0x4C0007 (Phoenix); the sibling versions 0x4C0006/0x4C0008/0x4C0009 (Hawk Point etc.) may place it differently, so I wouldn't assume it there without a dump.
Method: read the full table via read_pm_table, sample under variable / single-core-affinity load, diff idle vs hot. Happy to share raw dumps if helpful.
While reverse-engineering the Phoenix APU PM table, I mapped the per-core CPU temperatures on PM-table version
0x4C0007(Ryzen 7 7840HS, "Phoenix", Zen 4 mobile). They don't seem to be mapped here (there's no0x4C0007pm_table_*function) nor in RyzenAdj, so sharing in case it's useful.Finding
Per-core CPU temperatures = 8 consecutive
float32at indices[529..536]— i.e. physical core N → float[529 + N].Verified three independent ways on a 7840HS (8 physical cores)
0x00059800).[529]rose (+9.4 °C; others within ±2 °C)[533]rose (+7.2 °C; others within ±2.6 °C)Core0..Core7match[529..536]to within 0.4–0.5 °C, core-for-core, in the same order.For context, the rest of
0x4C0007(classic APU header, matches RyzenAdj)[2]limit /[3]value[8]limit /[9]value[16][529..536]Only verified on
0x4C0007(Phoenix); the sibling versions0x4C0006/0x4C0008/0x4C0009(Hawk Point etc.) may place it differently, so I wouldn't assume it there without a dump.Method: read the full table via
read_pm_table, sample under variable / single-core-affinity load, diff idle vs hot. Happy to share raw dumps if helpful.