Skip to content

drm/apple: qualify lean J700 DP Alt Mode and automatic recovery - #293

Merged
RyanTheTide merged 5 commits into
aurora-wipfrom
fix/atc-pipe-retry-20261013
Oct 14, 2026
Merged

RyanTheTide merged 5 commits into
aurora-wipfrom
fix/atc-pipe-retry-20261013

Conversation

@RyanTheTide

@RyanTheTide RyanTheTide commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

J700 display teardown can reach PHY SAFE configuration after role clocks have stopped, lose error ownership, or admit another route before teardown completes. Serialize connector transitions across mux handles, quiesce DCP before SAFE/provider writes and role shutdown, retain failed SAFE ownership, and check finalization before admitting DP again. Preserve SRCU reader accounting, module/provider lifetime and consumed mux-release accounting across retries.

This topic also retains the production SDR colour, monitor EDID/name and fixed-refresh work, the reviewed provider binding correction, and the earlier diagnostic cleanup. Compact standard regressions replace the retired one-off diagnostic files. No new manual hub-awake requirement, diagnostic override or global PM workaround is added.

Public head 6f004361c61bf176e5cd502c59b531e2e8c648e7 is a non-forced descendant of latest aurora-wip 1b6f659597493ab2db36520313c5b9a45d9afbc5. New author/committer fields are Ryan Murray, with Signed-off-by and only Assisted-by: LLM. Existing contributors are preserved. Hardware observations supply audited facts; private implementation is not copied.

Validation: 51 scoped author regression groups and zero-warning affected ARM builds pass. Independent review passes the five retained SRCU, failed/partial deselection retry, SAFE-after-role-clock and lookup/module/unregister witnesses. The complete matching ARM64 Image/modules/DTBs build passes. Full-tree correspondence confirms the compiled source differs from this public tree only in the previously reviewed documentation binding metadata. The exact matched kernel/modules/initrd were installed and one orderly reboot verified R69 runtime kernel notes and artifact hashes. Current kernel and release rollback are preserved.

Final Neo qualification passed on the exact matched R69 build with latest public U-Boot 0cb6fed6. Linux adopts the running MTP RTKit session. The final normal, untraced cold boot (cf85709b-77e0-48aa-ba0b-7b3ce0f3e190, controller h-28158) retains the expected Acer EDID, the multifunction dock at 5 Gb/s, no queried PIPE/configuration errors and no failed systemd services. Installed kernel notes and bundle identities were verified during reboot.

The owner reports boot-menu keyboard and Linux keyboard/trackpad passing; both USB-C orientations and the return direction pass with moving picture/cursor, normal SDR colours, Acer name and 180 Hz. Clamshell operation passes separately from the explicit Power → Suspend and wake/unlock batch, which also passes display, input, Wi-Fi and dock recovery. Temporary trace events and their one-shot boot entry were removed; the normal R69 entry is selected persistently.

Independent final review recommends merging exact head 6f004361 once the normal untraced boot passes; that condition is now satisfied. Complete M1/M2 and whole-beta qualification remain separate. HDR/DSC/VRR are not qualified. No speculative LPM/SUSPHY workaround is included.

Duplicate #294 is closed: its external VRR refusal and parser range suppression remain here. #295 is still open until exact supersession is demonstrated.

@RyanTheTide

Copy link
Copy Markdown
Contributor Author

Independent adverse review requests changes before merge. The ATC-local tests and full ARM64 build pass, but extracted production consumer/provider fault tests reproduce two cross-layer recovery defects:

  • DWC3 discards a failed phy_power_off() result. Generic PHY correctly retains its power reference, but a later start increments that retained reference; the subsequent ordinary stop can skip the provider cleanup callback.
  • Apple DWC3 records NO_CABLE before a reset that can now fail. A repeated disconnect can therefore return success without retrying the pending reset.

A legacy partial-shutdown recovery gap was also reproduced and is being handled separately from claims about newly introduced behavior. A follow-up is implementing balanced teardown obligations and pending-reset retry, with the original failures retained as negative controls. Do not force-decrement generic PHY references or report a failed hardware parking operation as successful.

PR remains draft. These host findings do not establish the cause of the observed hardware LOCK_ACK warnings or certify hotplug reliability. Full-kernel warnings and runtime qualification are still under review.

@RyanTheTide RyanTheTide changed the title phy: apple: retry failed PIPE setup without changing lane state phy/apple: recover fixed-hub PIPE routing across cable flips Oct 13, 2026
@RyanTheTide

Copy link
Copy Markdown
Contributor Author

R55 physical qualification failed: cold boot in reverse orientation reached a valid named Acer 1080p180 configuration, but unplugging and flipping to normal returned no picture. The first PIPE lock failure occurs in SAFE/unplug before the new orientation is applied. Replug obtains a fresh monitor-data service but BIST startup and the display link fail; SAFE retries subsequently exhaust.

This narrows the unresolved fault to shutdown/PIPE handoff and warm recovery. The cache invalidation and parking changes pass source tests but do not close the hardware issue. PR remains draft; no release promotion or tag.

Replace the experimental profile and bandwidth/rate switches with the
validated hardware and firmware profile, bounded advertised fixed-rate
admission, guarded native monitor identity and physical disconnect handling.
Resume the matching SuperSpeed root across Type-C PHY transitions and retain
failed handoff ownership instead of reporting an untrained link as usable.

Remove one-off diagnostics and qualification observers. Keep a compact
standard selftest suite exercising actual admission, publication, PHY,
ownership, retry and legacy paths. Include reviewed SEP readiness, producer
sensor refusal and ISP metadata parsing corrections without changing their
cryptographic or hardware command protocols.

Include Bartosz Nitka's unchanged T8140 WFI/s2idle correction through its
original PR298 commit as a merge parent, preserving its authorship and signoff.

This is an integration candidate, not a hardware-qualified beta. Exact
source tree7196655aef16cd39d9db2f17e0cbfbf5067526fe built Image/modules/dtbs
with C -Werror and Rust -Dwarnings; affected objects passed W=1. Host and
adverse controls passed. Automatic repeated orientation/hotplug, PM,
reference-machine regressions and HDR qualification remain open.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
@RyanTheTide
RyanTheTide force-pushed the fix/atc-pipe-retry-20261013 branch from 00a2d82 to f5afac9 Compare October 13, 2026 15:52
@RyanTheTide RyanTheTide changed the title phy/apple: recover fixed-hub PIPE routing across cable flips drm/apple: qualify lean J700 DP Alt Mode and automatic recovery Oct 13, 2026
Retain admitted reannouncements while old commands drain, cancel pending
OPEN when CLOSED supersedes it, and preserve interface tag history across
reader-pinned slot transitions. Fence explicit physical absence during
admission, publication and EDID-current validation. Preserve old command
buffers, reader pins and existing endpoint teardown ownership.

Keep actual-function regressions in the compact standard selftests.
Independent review verified corrected CLOSED/history/absence/fixture
controls and strict ARM objects. Exact source tree f14f599
passed the full strict R66 Image/modules/dtbs build.

This is a functional qualification candidate. The inherited four-bit command
identity still cannot distinguish a firmware-republished consumed reply
when all correlation values recur; retained command-17 counterexamples
remain unresolved. No new peer-token semantics, packet experiment, cached
EDID override or production diagnostic knob is introduced. No release or
hardware qualification is claimed for this new candidate.

Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Own the attached upstream USB3 link across the fixed-host PHY handoff, reject detached or quiescing roots, and serialize synchronous DWC3/xHCI removal before SUSPHY/controller teardown. Preserve fatal ACK errors, normal autosuspend and the compact source regressions. Keep required AFK faults visible while distinguishing the intentionally unsupported auxiliary role and known opaque OSLog events.

The published source tree exactly matches compiled checkpoint 1183f73bc58972456acf6ff5fcfe094a2427364e and its R68 full build. Preserve the original Bartosz cpuidle commit through the current aurora-wip merge parent. Source review and builds pass; hardware trial, repeated physical orientations/hotplug and full beta qualification remain open. This draft is not a release or merge qualification claim.

Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Assisted-by: LLM
The shared H17P provider callback consumes the same five opaque,
exact-size table inputs for T8140 DCP and DCPEXT. Permit them on both
controllers; keep the existing byte lengths and restrictions on every
other compatible. No requiredness or runtime consumer change is made.

Independent validation reproduces five DCPEXT errors on the parent and
passes the correction, 113 contract controls and dt-doc validation.
Live firmware presence and loader/FDT qualification remain separate.

Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Assisted-by: LLM
Quiesce the display before SAFE provider writes and role-clock shutdown.
Serialize connector transitions across mux handles, retain failed SAFE
ownership, and check finalization before admitting a new DP route.

Keep SRCU reader accounting local and preserve module/provider lifetime.
Track consumed mux release separately so retries cannot release twice.
Refuse reset when provider acquisition cannot establish SAFE.

Retain compact actual-source regression coverage for transaction ordering,
error paths, reference lifetime and release accounting. Independent review
passes all five retained failure witnesses. Complete ARM64 Image/modules/
DTB build passes. Target recovery qualification is pending; this is not a
hardware hotplug or suspend/wake pass.

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

Copy link
Copy Markdown

Tested 6f00436 on a MacBook Pro 16" M2 Pro (t6020, j416s), since its message says hotplug and suspend/wake were not qualified yet.

Kernel: aurora-wip ac89582 plus #296, #299 and #276 (and #277), CONFIG_RUST=n (our bindgen 0.72 / rustc 1.98 fail the bindings layout checks on 7.1.12). Each test ran twice on that kernel and twice on the same kernel with 6f00436 reverted, as a control. Linux runs under the m1n1 hypervisor, which keeps ATC0 for itself, so the displays were on the other two ports.

test with 6f00436 reverted
Dell U2725QE over a Thunderbolt DP tunnel, 8 cable replugs, audio playing 8/8, 35/35 plays 8/8, 36/36 plays
TV on a USB-C to HDMI adapter (DP alt mode), 8 replugs, the Dell left on its tunnel 8/8, TV routed 9/9, 33/33 plays 8/8, 9/9, 36/36 plays
s2idle with pm_test=platform, 3 cycles per boot, the Dell on its tunnel 6/6, re-routed after each 6/6

No "failed to place Type-C mux in safe mode", no -EBUSY and no WARNING from typec, tipd, atcphy or the crossbar in any of them; the Dell never lost its tunnel while the TV was replugged. So on t6020 it looks good for plain unplugs, both through a tunnel and on the DP alt path, which is the one that goes through SAFE.

Not tested: an unplug while DCP is busy or refusing (I could not provoke one), and native suspend/resume outside the hypervisor.

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.

2 participants