Skip to content

soc: apple: clpc: T6041: the J614c's own Low Power mode ceiling - #1796

Open
joske wants to merge 2 commits into
aurora-silicon:integration/aurorafrom
joske:pr/t6041-j614c-low-power-ceiling
Open

joske wants to merge 2 commits into
aurora-silicon:integration/aurorafrom
joske:pr/t6041-j614c-low-power-ceiling

Conversation

@joske

@joske joske commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

#1727 gave the M4 Max macOS's Low Power mode, with the CPU ceiling from the J616c's ADT (cpu-low-power-frequency-max = 2808 MHz) for every apple,t6041 machine. The 14" J614c's ADT has 2616 MHz there. The macOS 26.6.2 ADTs show the same 14"/16" split on the M4 Pro (J614s 2616, J616s 2808). So in power-saver the J614c's P clusters ran one table step higher than macOS lets them (2868 instead of 2616 MHz).

Change

  • The single low_power_machine compatible becomes a per-machine table, first match wins: apple,j614c 2616 MHz, then apple,t6041 2808 MHz. So the J616c, and the J575c whose ADT I don't have, keep 2808. The M4 Pro still gets no profile, and T6050 keeps its ceiling on any machine.
  • KUnit: a new case checks the J614c, J616c, J575c, J614s and table-less results. With the two table rows swapped, it fails.

Testing

J614c (MacBook Pro 14" M4 Max), os-fw 26.6.2, kernel integration/aurora fdef45b + this commit + #1793, with CONFIG_ACPI=y (see below).

  • apple-clpc offers low-power balanced performance; powerprofilesctl lists power-saver.

  • scaling_max_freq:

    Cluster balanced power-saver
    P (policy0, policy10) 4104 MHz 2616 MHz
    E (policy1) 2592 MHz 2592 MHz

    Back to balanced restores 4104 MHz.

  • An all-core spin (16 threads) for 14 s, on battery, SMC "Total System Power" after 7 and 10 s:

    Profile P clusters System power
    balanced 4104 MHz 91.2 / 91.8 W
    power-saver 2616 MHz 43.2 / 43.3 W

    Idle is 4.7 W in both. I didn't measure the old 2868 MHz step.

  • KUnit clpc on arm64 QEMU: 13 passed, 1 skipped (apple_g17_rx_util_min_test, needs CONFIG_UCLAMP_TASK).

Note: the profile only registers with CONFIG_ACPI_PLATFORM_PROFILE, which lives under drivers/acpi/ and is only built with CONFIG_ACPI=y. The aurora package config has # CONFIG_ACPI is not set, so with the shipped kernel no T6041 or T6050 machine gets a platform profile. For this test I built with CONFIG_ACPI=y; with no ACPI tables, the kernel logs "ACPI: Interpreter disabled" and boots from the DT as before.

🤖 Generated with Claude Code

joske and others added 2 commits November 13, 2026 10:23
The T6041 low-power profile takes macOS's Low Power mode CPU ceiling
from the J616c's ADT, cpu-low-power-frequency-max = 2808 MHz, for every
M4 Max. The 14" J614c's ADT has 2616 MHz there (macOS 26.6.2; the J614s
and J616s show the same 14"/16" split), so in power-saver its P clusters
run one step higher than macOS lets them.

Replace the single machine compatible with a per-machine table, first
match wins: the J614c gets 2616 MHz, other T6041 machines keep 2808 MHz.
The M4 Pro still gets no profile, and T6050 keeps its ceiling on any
machine. A KUnit case checks the J614c, J616c, J575c, J614s and
table-less cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jos Dehaes <jos.dehaes@gmail.com>
The test builds struct apple_clpc_hw and the T6040 table from clpc.c.
That table now points at apple_clpc_t6041_low_power, so copy struct
apple_clpc_low_power and the table as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jos Dehaes <jos.dehaes@gmail.com>
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