Repository navigation
iommu: apple-dart: keep a T8142 DART that a live coprocessor uses - #1122
RyanTheTide merged 1 commit into
Conversation
On T8142 the boot loader may start the MTP for the internal keyboard (for example to read a disk passphrase) and hand the running session to Linux, with its DART streams in bypass. The MTP helper adopts that session, but the DART probe reset the block first and cut the coprocessor off. When an available node with apple,rtkit-handoff = "mtp-live-v1" uses a T8142 DART through iommus, keep the DART as it is, as already done for the J713 and J614s MTPs. The T8142 TCR bypass bits read back as zero even while the streams bypass, so the bypass cannot be confirmed from the registers. Trust the handoff and refuse only a DART that cannot bypass at all. Signed-off-by: Dmitriy <noc@pimk.in> Assisted-by: LLM
|
Merge-train rows so far (MTR3, 2026-11-08). Test kernel 7.3.0-aurora-f4mtr3g = integration/aurora af6d986 + #1122 + #1123 + #1124 + #1176, built with 0 warnings. Each Mac got one silent one-shot boot. The checks were our FLEET regression suite vs the same Mac's fleet31/fleet30 rows, plus keyboard/trackpad/HID/DART/MSI error counts and gpubench, test boot vs default boot:
Not merged yet: the plan was to merge after the M1 Pro row. The kit is kits/test/20261108-f4mtr3g on the S500, and the row script is work/linux/mtr3-20261108/comborow.sh (M1 Pro, TID=0). |
|
M1 Pro row done (the last of the four), 7.3.0-aurora-f4mtr3g = integration af6d986 + #1122 + #1123 + #1124 + #1176, one-shot vs the fleet31 default:
Rows passed on all four Macs (M2, Neo, J616s, M1 Pro). The trial merge onto integration d4d2678 is clean. Merging. |
|
Merged, thanks @dmitzsaz. It will ride the next fleet kernel. |
Brings #1122, #1123, #1124 (T8142 DART/MTP/MSI), #1176 (G17 fw-id fence), #1201 (J700 speaker full scale) and the rest of integration since 11943fb into aurora-wip. Conflicts were in four device-tree binding documents only, where aurora-wip has the T8152 versions and integration the T8142/T8152/T6050 generalisation: - apple,admac: keep both the lone apple,t8152-admac and the apple,t6050-admac/apple,t8140-admac pair. - apple,t8152-aop: take integration (it still allows a lone apple,t8152-aop, one or two mailboxes). - apple,t8152-aop-audio: take integration and keep a lone apple,t8152-aop-audio compatible. - apple,dwc3: keep the T8152 host-mode rules, and require resets and usb-role-switch on every enabled non-T8152 controller. Signed-off-by: Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> Assisted-by: LLM
On the J704 (MacBook Pro 14-inch, M5, T8142) U-Boot starts the MTP so the internal keyboard works in its console, and hands the running session to Linux, with the MTP DART streams in bypass and
apple,rtkit-handoff = "mtp-live-v1"on the MTP node. The DART probe resets the block and cuts the MTP off:and the internal keyboard is dead in Linux until the next boot.
This keeps a T8142 DART as it is when an available node with
apple,rtkit-handoff = "mtp-live-v1"uses it throughiommus, as is already done for the J614s and J713 MTPs. The T8142 TCR bypass bits read back as zero even while the streams bypass, soapple_dart_streams_bypassed()can't confirm it; the DART trusts the handoff and refuses only a DART that cannot bypass at all.Tested on: J704, 2026-11-07,
7.3.0-j704dt+(aurora-wip 57222e0 + this PR, the rtkit-helper and apple-msi PRs, #1060 and the J704 DT):Retaining the live coprocessor bypass,rtkit-helper 394600000.mtp: adopted the running RTKit session (4 retained buffers), keyboard, stm and multi-touch interfaces ready; the internal keyboard works in the U-Boot console and then in Linux. Without it: the three lines above, no keyboard in Linux. The same change has run in our J704 kernel on every boot since 2026-11-05.Prepared with Claude Opus 5.5; tested by me on the hardware.