Repository navigation
M4: take the PMP, PMGR, display and GPU paths on the 26.6.2 firmware on every M4 Mac - #1171
Merged
Merged
Conversation
…ied firmware The PMP power-vote bridge, its telemetry, the PMP thermal driver and the T8132 report readiness were gated on the Airs, so the G16 GPU, which needs the AGX vote and PMP cooling, could not come up on the J604, J773g or the iMacs. What these paths depend on is the PMP firmware, not the board. The J604's ADT as iBoot hands it over on OS firmware 26.6.2 (iBoot mBoot-18000.161.10), the firmware the J713 path is qualified on, has the J713's PMP: iop,ascwrap-v6, iop-version 1, the same interrupts, and the same iop-pmp-nub sochot-sensors and lts-ctrl-loop. Its 27.0 ADT and the J773g's 26.6.2 ADT carry the J713's soc-device table byte for byte (34 records, AGX at 12 and DISP at 15, which the bridge checks itself), the same temp-sensor and controller records, and the same PMGR devices, ps-regs, pwrgate-regs, power-domains and gfx-tvm. Only lts-config, lts-clpc-voltage and the J773g's dvfs-disp-min-state differ; the boot loader hands each Mac's own values to the PMP firmware. Add apple_t8132_qualified_firmware(), true on T8132 with the boot loader's /chosen/asahi,os-fw-version "26.6.2", and apple_t8132_firmware_path(), which also keeps the Airs on any firmware as before, and use it for the bridge (and so the G16 board check), the telemetry, the thermal driver and the report. J713 and J715 behave as before. The host harnesses model no /chosen. Signed-off-by: Diljit Singh <hey@djdev.me>
On the M4 firmware path the PMGR policy disables ATC2 and ATC3, which the Airs do not wire. The J604 wires ATC3 and the J773g and J624 wire both; their USB devices sit in those ports' common, USB and USB AON domains. State those domains okay, as the policy does for ATC0/ATC1, so the policy keeps them. Signed-off-by: Diljit Singh <hey@djdev.me>
Which PMGR domains Linux may touch, and which the firmware owns, follows from the firmware: the J604 and J773g ADTs have the J713's PMGR devices, ps-regs, pwrgate-regs and power-domains. The platform handoff and the pmgr-pwrstate check that enforce that policy ran on the Airs only. Run them on the M4 firmware path. On the Airs nothing changes: the policy still overrides any status, as the original J713 loader tree needs. Other trees state what their board wires, so the handoff keeps their explicit status, except on domains the policy gives the firmware (firmware-owned or inherited-on), such as the DCP CPU domains the SoC tree leaves disabled; domains without a status take the policy's. Compiled and checked against the J713 policy, every M4 tree then ends up with the J713's domain states except the ports it wires beyond ATC0/ATC1 (ATC3 on the J604, ATC2 and ATC3 on the J773g and J624) and the J773g's ISP domains (no camera). No enabled device is left on a disabled domain. Signed-off-by: Diljit Singh <hey@djdev.me>
…fied firmware The retained internal display DARTs, the handed-over dcpext routes, external output sleep handling and the dcpext and dispext DARTs were gated on the Airs. They depend on the 26.6.2 display firmware and on the SoC's DCP and DART layout, which every M4 tree describes the same way (t8132-dcp.dtsi, t8132-dcpext.dtsi); the J604 26.6.2 and J773g ADTs place the disp0 and DCP DARTs' page-table regions as the J713's does. Use apple_t8132_firmware_path() for those gates and accept every M4 target-type in the retained display handoff's ADT check. Each path still acts only on what the boot loader hands over, so a board whose loader hands nothing over is unchanged; J713 and J715 are unchanged. Panel timing stays per board in the M4 DCP profiles, and the PCIe identity-domain default stays with the Airs. Signed-off-by: Diljit Singh <hey@djdev.me>
The legacy inherited-helper path served only the Airs, but it is about the live MTP keyboard and trackpad, which the J604 has as well (apple_t8132_live_mtp()). Use that predicate. J713 and J715 are unchanged; the J773g and the iMacs have no MTP. Signed-off-by: Diljit Singh <hey@djdev.me>
t8132.dtsi gives every M4 Mac the J713's GPU, mailbox and GFX TVM gate, disabled until "a board's firmware and board data are qualified"; only the J713/J715 tree enabled them, with the TVM parent of the GFX domain and the PMP report. All of it follows the 26.6.2 firmware: the J604 (26.6.2) and J773g ADTs place the sgx and gfx-asc at the J713's addresses with the same interrupts and gfx-tvm, and the boot loader checks those again and fills or disables the GPU. A Mac's DVFS table comes from its own ADT, which the driver qualifies by shape (16 source states on all three). Describe them in t8132-gpu.dtsi for every M4 Mac and drop the J713/J715 copies; those boards keep their explicit ps_gfx status. Their dtbs differ only in three status = "okay" lines that were already the default; no M4 dtb gains a dt-validate warning. Signed-off-by: Diljit Singh <hey@djdev.me>
This was referenced Nov 7, 2026
This was referenced Nov 7, 2026
RyanTheTide
pushed a commit
to rolotrealanis98/linux
that referenced
this pull request
Nov 8, 2026
Picks up aurora-silicon#1170 (G15/G16 on by default) and aurora-silicon#1171 (T8132 display, PMP and GPU gates on SoC plus firmware 26.6.2). No conflicts. Signed-off-by: Diljit Singh <hey@djdev.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The M4 PMP bridge, PMGR policy, PMP report, telemetry and thermal, the display handoff and the G16 GPU path were gated on the M4 Airs (
apple_t8132_air(), J713/J715). What they depend on is the firmware. This gates them on the SoC and the qualified OS firmware, 26.6.2, so the J604, J773g, J623 and J624 take the same path as the J713. Board data, such as panel timing and which USB-C ports exist, stays in the board trees and profiles.The gate
apple_t8132_qualified_firmware()is true onapple,t8132with/chosen/asahi,os-fw-version = "26.6.2", which aura publishes (iBoot mBoot-18000.161.10).apple_t8132_firmware_path()is that, or an Air. The Air term keeps the J713 and J715 exactly as they are on any firmware. It can go once the Airs only ever run 26.6.2.Evidence
From
work/adt/:iop,ascwrap-v6,iop-version 1, interrupts 878/877/880/879, and the sameiop-pmp-nubsochot-sensorsandlts-ctrl-loop. It has the samegfx-tvm, andsgxandgfx-ascat the J713's addresses. Values over 256 bytes are cut from that dump.soc-devicetable byte for byte: 34 records, AGX at 12 and DISP at 15, which the bridge checks itself. They also have the sametemp-sensorandcontrollerrecords, and PMGRdevices,ps-regs,pwrgate-regs,power-domainsandgfx-tvm.lts-config,lts-clpc-voltageand the J773g'sdvfs-disp-min-statediffer. aura hands each Mac's own values to the PMP firmware.perf-state-count16, one table, 15 GPU states. Top clocks differ, and the driver keeps each Mac's own values.Where a board difference is real
I compiled every M4 tree and checked the PMGR policy against what each board's enabled devices use. The J713 policy differs from the other boards in exactly two places:
common,usbandusb_aondomains. The J604 uses ATC3's, and the J773g and J624 use both ports'. Those boards now state these domains okay, as the policy does for ATC0/ATC1.The platform handoff now keeps a non-Air tree's explicit status, except on domains the policy gives the firmware (firmware-owned or inherited-on), such as the DCP CPU domains the SoC tree marks "Locked, don't touch it". After the handoff, every M4 tree ends up with the J713's domain states apart from those two differences, and no enabled device sits on a disabled domain. On the Airs the handoff still overrides any status, as the original J713 loader tree needs.
Panel timing stays per board in
dcp-m4-profile.h, which has only the J713 and J715. The J604 and the iMacs need their own profiles before their internal displays are adopted. The J773g has no internal panel. The GPU doesn't wait for a display the loader didn't hand over (#1170).Commits
/chosen.apple_t8132_live_mtp(), which includes the J604.t8132-gpu.dtsi: describe the GPU, mailbox and TVM gate for every M4 Mac, with the TVM parent,apple,sleep-retainedonps_gfxand the PMP report link, and drop the J713/J715 copies.Still Air-only: the PCIe identity-domain default in apple-dart, which isn't firmware-bound and changes working PCIe on other boards.
Testing
status = "okay"lines. dt-validate shows no new warnings on any M4 board. That needsphy/ti,cd2e22.yamldropped from the schema; CI crashes onapple,tunablefor every T8132 dtb.Base
Rebased on integration/aurora 72b828e, after #1166. The GPU, mailbox, TVM parent,
sleep-retainedand PMP report link move fromt8132-j713-j715.dtsiinto the sharedt8132-gpu.dtsi. The J713/J715 dtbs then differ only by threestatus = "okay"lines that were the default anyway.🤖 Generated with Claude Code