From 07f6411555ec2511c88e9677caaa44bbb36503c7 Mon Sep 17 00:00:00 2001 From: Ryan Murray Date: Tue, 27 Oct 2026 17:59:10 +1100 Subject: [PATCH] arm64: dts: apple: t6040-j616s: Shed CPU power at the GPU firmware limit 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 --- arch/arm64/boot/dts/apple/t6040-j616s.dts | 28 +++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/arch/arm64/boot/dts/apple/t6040-j616s.dts b/arch/arm64/boot/dts/apple/t6040-j616s.dts index c47e71ed1e258..c4c26d26b2755 100644 --- a/arch/arm64/boot/dts/apple/t6040-j616s.dts +++ b/arch/arm64/boot/dts/apple/t6040-j616s.dts @@ -311,11 +311,15 @@ * failure of that loop; they never act in normal use. * * The GPU has no cooling device of its own: its firmware sets the GPU - * performance state. The seven hottest GPU die sensors (Tg05, Tg0S, - * Tg0Y, Tg0k, Tg0z, Tg1V, Tg1l) shed package power through the CPU - * clusters from 105 C, above the 103.8 C peak measured during - * conformance runs, and shut down at 118 C. While the GPU is powered - * off its sensors report placeholder values from -4 to 4 C. + * performance state and starts limiting at 101 C. The SMC runs the + * fans in its own mode (3), only at their minimum speed in every load + * measured under Linux, and refuses manual fan modes from the OS. So + * when a GPU die sensor reaches the GPU firmware's limit, the seven + * hottest ones (Tg05, Tg0S, Tg0Y, Tg0k, Tg0z, Tg1V, Tg1l) also shed + * CPU power through the CPU clusters, from the same 101 C, leaving the + * shared heat budget to the GPU. They shut down at 118 C. While the + * GPU is powered off its sensors report placeholder values from -4 to + * 4 C. */ thermal-zones { cpu-die-thermal { @@ -884,7 +888,7 @@ trips { gpu0_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -935,7 +939,7 @@ trips { gpu1_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -986,7 +990,7 @@ trips { gpu2_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -1037,7 +1041,7 @@ trips { gpu3_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -1088,7 +1092,7 @@ trips { gpu4_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -1139,7 +1143,7 @@ trips { gpu5_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; }; @@ -1190,7 +1194,7 @@ trips { gpu6_passive: trip-passive { - temperature = <105000>; + temperature = <101000>; hysteresis = <5000>; type = "passive"; };