Repository navigation
t6041-j575c: run the PMP and the J614c CPU thermal zones (all-core CPU 2.1x) - #1599
Conversation
RyanTheTide
left a comment
There was a problem hiding this comment.
Checked against t6041-j614c-j616c.dtsi: the PMP nodes, the pmp alias and the 17 CPU zones match, and the SMC sensor indices line up with the J575c labels. The before/after numbers and the s2idle and fan runs cover it. Approved.
|
@7robertodantas this conflicts with integration/aurora now that #1575 and #1573 are in (same parts of t6041-j575c.dts). Please rebase or merge integration/aurora into the branch and we'll merge it. |
… zones The J575c's CPU thermal zone was a guess (the J616c's early limits): one power-allocator zone with no switch-on trip and no sustainable-power. The allocator then throttled at any temperature. Under an all-core load at a 56 C die, it held the clusters at 2352 MHz (P0), 1020 MHz (E) and 1260 MHz (P1), about 40 W for the whole Mac, half the throughput. The PMP was also left off, so the cpufreq fast-die-effort links were dropped. With the PMP on and the old zone kept, the allocator pinned every cluster at its lowest state (all cooling devices at their maximum at a 48 C die). Take what the M4 Max MacBook Pros run (t6041-j614c-j616c.dtsi): the same T6041, the same SMC sensor keys in the same order and the same ADT die limits. - Run the PMP: the pmp alias (the loader copies this Mac's PMP values from the ADT and enables it), its DART, report, mailbox and the PMC, and the GPU on the PMP's GPU domain. Keep fast-die-effort. - Use their 17 CPU zones (die, and one per core-complex sensor), which switch on at 112 C and control at 116 C behind the PMP's 110 C loop. Tested on a J575c (Mac Studio, M4 Max), from a trial Stage 2: the PMP starts and reports running, with 90 ADT values copied. Under a 5 min all-core stress-ng load the clusters hold 4104/2592/4104 MHz at 86 W and a 90 C die. Throughput rises from 758 to 1592 bogo ops/s (2.1x). With the GPU loaded as well: 94 W, a 94 C die and full CPU clocks. glmark2 --validate passes and vkcube runs on the PMP GPU domain. HDMI, USB-C display, USB, Ethernet and audio are unchanged. Signed-off-by: Roberto Dantas <7robertodantas@gmail.com> Assisted-by: LLM (Claude Code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45ef634 to
6730073
Compare
|
@RyanTheTide Rebased onto integration/aurora (bf00add). The conflicts were the DockChannel node and |
RyanTheTide
left a comment
There was a problem hiding this comment.
Rebase checked: the PMP and thermal-zone changes are the same as the reviewed version, and the DockChannel and cpuidle nodes from the base are kept. dt-checks and host-tests pass.
f105d94
into
aurora-silicon:integration/aurora
Written with an AI assistant (Claude) on @7robertodantas's behalf; every hardware step was run and checked on the owner's J575c.
t6041-j575c: run the PMP and the J614c CPU thermal zones
On the J575c (Mac Studio, M4 Max), all-core CPU load ran at about half speed. Two guesses in the board DT, which was written before there was a J575c ADT, caused it:
cpu-die-thermalwas the J616c's early guess: onepower_allocatorzone with a passive trip at 113 C, no switch-on trip and nosustainable-power. With no switch-on trip, the allocator runs all the time. With no budget, it estimates one from the lowest operating points. Under an all-core load at a 56 C die, it held P0/E/P1 at 2352/1020/1260 MHz, and the whole Mac stayed near 40 W.pmp_dart,pmp_report,pmp_mboxandpmcdisabled and had nopmpalias, so it also dropped the cpufreqapple,fast-die-effortlinks. The J614c and J616c have run the PMP for a while. Enabling it alone made things worse: with the old zone kept, all three cooling devices sat at their maximum (19/19, 6/6, 19/19) at a 48 C die, with every cluster at its lowest state.This change takes what the M4 Max MacBook Pros run (
t6041-j614c-j616c.dtsi). They have the same T6041 SoC, and their DT uses the same SMC keys in the same order (TCMz, TCMb, Tpx0-5, Tpx8-D, Tex0-3 at hwmon indices 0-17; checked against this Mac's labels):pmpalias (aura'sdt_set_pmp()then copies this Mac's PMP values from the ADT and enables the node),pmp_dart,pmp_report,pmp_mbox,pmcwithapple,pmp, the GPU onpmp_gfx, andapple,fast-die-effortkept.Checks against this Mac's ADT (macOS 27.0.1):
/arm-io/pmgrhaspmp= 2,clpc= 3 andppt-thrtl,llc-thrtl,amx-thrtl= 1./arm-io/pmp(ASC at 0x500e00000, IRQs 414-417) and/arm-io/dart-pmp(0x500300000) matcht604x.dtsi.Tested on a J575c (linux-aurora 7.3.0, from a one-shot aura trial Stage 2 whose DTB is the live J575c tree plus only this change). The load is
stress-ng --cpu 16 --cpu-method matrixprodfor 5 minutes, logged every 2 s from the SMC hwmon and cpufreq.apple-pmp-report: "PMP running (status 0x1)", 90 ADT values copied;apple-clpcbindspmp_gfxglmark2 --validatepasses every scene that has a reference image; vkcube runs; no GPU faultsdt-validateagainst this tree's bindingsrtcwake -d rtc1 -m freeze -s 30) with the PMP runningsuspend_statssuccess; both displays, Ethernet and the audio cards back; then all-core at 4104/2592/4104 MHz again (91 W)Fan ramp: 10 min of
stress-ng --cpu 16plus offscreen glmark2, sampled every 2 s from the SMC hwmon (temp1TCMz,fanN_input,fanN_target,power1). The CPU stayed at 4104/2592/4104 MHz in all 298 load samples.The die peaked at 95 C, and the fan target peaked at 1327 RPM just after the load ended (fan range 1000-3625 RPM).
Not tested:
F0Md/F1Mdmode key).sustainable-powervalues (48 W die, 24 W per P cluster, 2 W per E zone) are untested on the Studio. The Studio has more cooling than the MacBook Pros, so these may be conservative for it.Notes:
cpufreq: Chip 0x6041 is unsupportedon this Mac. That message is not involved here: the T6040 path in aura only steps the boot P-state and programs no throttle registers./arm-io/pmphas a second block at 0x500850000 (0x4000) that thepmpnode's firstreg(0x500700000, 0xe0000) does not cover. The J614c and J616c share this node and run, so it is left unchanged.🤖 Generated with Claude Code