Skip to content

arm64: dts: apple: t6040-j616s: Shed CPU power at the GPU firmware limit - #511

Closed
RyanTheTide wants to merge 1 commit into
wip/j616s-gpu-parity-20261026from
j616s/gpu-zone-trip-20261027
Closed

RyanTheTide wants to merge 1 commit into
wip/j616s-gpu-parity-20261026from
j616s/gpu-zone-trip-20261027

Conversation

@RyanTheTide

Copy link
Copy Markdown
Contributor

This PR moves the J616s GPU thermal zones' passive trip from 105 C to 101 C. That is the temperature at which the GPU firmware starts limiting itself. It is a DT-only change: no driver, parameter or config change.

Why:

  • The J616s fans give Linux no extra headroom. The SMC keeps both fans in its own mode 3 and turns them on only at minimum speed.
    • On a cold machine they came on at 93-99 C CPU die. On a heat-soaked one they came on at about 60 C.
    • No Linux load has pushed them above minimum.
  • The SMC refuses an OS write of manual mode. The existing fan_control path gets -EIO on F0Md = 1, and public prior art for M4 says this needs the Ftst unlock, which was not tried.
  • The GPU firmware limits at 101 C. With the passive trip at 105 C, the GPU zones' CPU throttling never acts in practice.
  • From 101 C the CPU clusters give up power to the GPU instead of both being limited separately.

The critical trip stays at 118 C, and the CPU zones are unchanged.

Not measured yet. Before merge, run gpubench or CTS against the current DT to see what it costs on GPU-heavy loads. The only cost is CPU frequency while a GPU die sensor is at or above 101 C.

Evidence: reports/j616s-sensors-20261027/FANS.md.

🤖 Generated with Claude Code

The GPU zones shed CPU power from 105 C, a pure backstop. But the J616s
fans give no extra headroom under Linux: the SMC keeps them in its own
mode (3), turns them on only at minimum speed (seen from 93-99 C die
on a cold machine, from about 60 C once it is heat-soaked) and refuses
an OS write of manual mode. The GPU firmware itself starts limiting at
101 C, and conformance runs reached 103.8 C.

Start the GPU zones' passive trip at that same 101 C, so that once the
GPU is at its own limit the CPU clusters give up power to it instead of
both being limited separately. The critical trip stays at 118 C.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
@RyanTheTide

Copy link
Copy Markdown
Contributor Author

Note: the gpubench/CTS comparison for this change is pending; the measurement agent will run it. The J616s test kernel fan2 carries this commit together with the fan-control driver change.

@RyanTheTide

Copy link
Copy Markdown
Contributor Author

Final head for batching: 07f6411 (t-3207 batch1). The gpubench/CTS comparison is pending with the measurement agent. New context from Ryan's Fallout 4 session: the SMC does ramp the fans above minimum on its own, about 100 rpm per 15 s, to 2374/2557 rpm at around 62 W, and the CPU die peaked at 108 C before the fans caught up. That supports shedding CPU power once the GPU reaches its own 101 C limit.

@RyanTheTide

Copy link
Copy Markdown
Contributor Author

Landed in integration/aurora through #533 (J616s consolidation, 2026-10-28).

@RyanTheTide
RyanTheTide deleted the j616s/gpu-zone-trip-20261027 branch October 28, 2026 05:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant