Skip to content

drm/apple: support J613 native26 external displays - #973

Open
satchlj wants to merge 31 commits into
satchlj/port-307-20261104from
satchlj/port-342-20261104
Open

satchlj wants to merge 31 commits into
satchlj/port-307-20261104from
satchlj/port-342-20261104

Conversation

@satchlj

@satchlj satchlj commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Stacked on #969 (port of omacom/linux-aurora#307); review that first.

Add the explicitly selected J613 native26 external-display path, checked surface encoding, native power suppliers and retained DPMS/s2idle backing. Preserve Aurora’s newer M4/desktop, compact-endpoint, blending and deferred-PMP behavior. Requires the separately supplied matching loader handoff; retained backing is bounded and uncertain sessions require reboot.

Port of omacom/linux-aurora#342. Depends on the port of omacom/linux-aurora#307; use the stack base above to review this layer. The original PR remains untouched.

Carried dependencies (original patch, complete message, authorship and dates preserved; 7.3 adaptations are separate commits):

Original commit Carried commit Subject Original author Origin
e51f1082fa23 84ef8e4d724d drm/asahi: m3: restore the 7.1.12 T8122 runtime sources, unwired Scott Jones carried unaltered from omacom/linux-aurora
ad52c9b317f6 e45af192f61d drm/asahi: m3: start the T8122 runtime on 7.2 Scott Jones carried unaltered from omacom/linux-aurora
8e864a57c40e e16c5bbae3f8 drm/asahi: m3: map each VM's dummy page where the firmware expects it Scott Jones carried unaltered from omacom/linux-aurora
75c5823f60b3 eae5bfa6b7d3 drm/asahi: m3: quarantine a failed job's VM before signalling its fence Scott Jones carried unaltered from omacom/linux-aurora
d2666d8ca7a5 c9dcc611f3f1 drm/asahi: m3: keep the adopted UAT until ASC stops on a failed start Scott Jones carried unaltered from omacom/linux-aurora
e8023bba60e6 34b754f9d5cf drm/asahi: m3: don't let the compute stream debug read fail a job Scott Jones carried unaltered from omacom/linux-aurora
8a31fe185686 0486865371b4 drm/asahi: prepare supported M3 native GPU defaults Chris Kearney carried unaltered from omacom/linux-aurora
61eccdbbee80 6b505f46bda1 drm/asahi: m3: start the GPU firmware once per boot Scott Jones carried unaltered from omacom/linux-aurora
6246daaee9d2 00311a5359da drm/asahi: m3: don't quarantine VMs for packets the firmware never saw Scott Jones carried unaltered from omacom/linux-aurora
fc5391123e5a c297e5a44010 drm/asahi: align M3 Air startup diagnostics with board defaults Chris Kearney carried unaltered from omacom/linux-aurora
80958cd5a495 6cdb981acb5b drm/asahi: m3: take the start pin with try_module_get Scott Jones carried unaltered from omacom/linux-aurora
18c64047548c ba17f5af0ba0 drm/asahi: m3: admit clients that ask for the parameters up to the HAL generation DjDeveloperr carried unaltered from omacom/linux-aurora
4b7aa809ff54 a8f092b08ba0 drm/asahi: sync the G17 driver with aurora-silicon at d3cf19b DjDeveloperr carried unaltered from omacom/linux-aurora

@scottjones @chriskearney @DjDeveloperr @RyanTheTide

This carries Scott Jones's T8122 runtime and safety foundation from omacom/linux-aurora unaltered, because Aurora doesn't have it yet and this change builds on it. If you'd rather land it separately or differently, say so and I'll rework this.

This carries Chris Kearney's M3 native defaults and startup diagnostics from omacom/linux-aurora unaltered, because Aurora doesn't have it yet and this change builds on it. If you'd rather land it separately or differently, say so and I'll rework this.

This carries DjDeveloperr's M3 client parameter admission and timestamp adapter from omacom/linux-aurora unaltered, because Aurora doesn't have it yet and this change builds on it. If you'd rather land it separately or differently, say so and I'll rework this.

Aurora #783 held this foundation pending identity-selected constants and J613/J615 qualification. This port does not clear that hold.

Validation: arm64 defconfig + asahi.config, Image/modules/DTBs with BTF and KUnit enabled, LLVM 18/Rust 1.85.0, passed at stack top #342 (7ab2586b6897), which includes this branch. The validated integration base is b500668. QEMU loaded the test-bearing modules successfully with no additional failures. The combined run retains four pre-existing SEP store failures (plus their suite aggregate), reproduced on the unmodified Aurora base. The unmodified pinned base also crashes in apple-av-audio-lifetime/av_lifetime_devres_order; that unrelated audio suite is explicitly excluded. All tests added by these ports run through KUnit debugfs on Cortex-A76. This is not a fully green or complete-tree KUnit run. All eleven native26 host suites passed. A classic display comparison reproduced nine baseline host failures; the one additional fast-replug failure was fixed and its targeted rerun passed. No 7.3 hardware boot or deployment has been performed.

Add optional timestamped delivery while preserving the ordinary C and Rust receiver paths. The native display readiness check needs the receipt time rather than deferred callback execution time.

Signed-off-by: Satya Benson <satya@benson.earth>
Gate native26 admission on the live handoff and native PMP graph. Update existing supplier properties transactionally so failure restores the previous device tree. Keep the classic and internal display paths separate.

Signed-off-by: Satya Benson <satya@benson.earth>
Validate backing size, dimensions and address arithmetic before constructing the separate 26.6.2 wire record. Initialize nullable layers and decode each supported reply layout explicitly.

Signed-off-by: Satya Benson <satya@benson.earth>
Separate carrier startup, EPIC service identity and controller OPEN from display-port admission. Validate attachment generations, EDID and primary modesets; preserve same-mode readiness across DPMS and repeated commits. Retain the firmware session through s2idle and restart discovery after DRM resume. Release pending flips on a failed modeset without dereferencing an absent backlink. Keep native26 explicitly selected and leave classic peers on their existing protocol.

Fold callback, declaration, reply padding, admission, transactional supplier and atomic-primary fixes from the attended C13h series into their owning paths. Omit diagnostic catalogue and lifecycle tracing; keep remaining informational native messages at debug level.

Signed-off-by: Satya Benson <satya@benson.earth>
Keep executable host fixtures for production wire encoding, admission, changesets, startup, modeset and lifecycle behavior, including classic peers. Extend the existing apple-dcp selftest harness and host-test registry; these tests do not access hardware. Retain the imported GPU UAPI fixture registration correction. Drop diagnostic-only catalogue tests.

Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
…tion

Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
Signed-off-by: Satya Benson <satya@benson.earth>
…port-342-20261104

# Conflicts:
#	Documentation/devicetree/bindings/display/apple,dcp.yaml
#	drivers/gpu/drm/apple/afk.h
#	drivers/gpu/drm/apple/dcp.c
@satchlj

satchlj commented Nov 5, 2026

Copy link
Copy Markdown
Member Author

@DjDeveloperr @RyanTheTide ready for your regression testing. It hasn't been boot-tested on J613 with 7.3 yet; I'll post the result here when I have it.

…nder test

The extracted sender now charges ext26 commands against a per-endpoint
budget, refuses commands after a crash and latches the crash on a timeout.
Give the test's DCP and endpoint the crashed and ext26_command_* fields
and the size helpers it uses. Existing cases run with ext26 off; new cases
cover the budget limits, the crash refusal and a timed-out ext26 command
that keeps its DMA buffers.

Signed-off-by: Satya Benson <satya@benson.earth>
@satchlj

satchlj commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

J613 boot result on 7.3 (rubra, M3 MacBook Air 13", macOS 26.6.2 / 25G83 firmware), 2026-11-05.

Brings in integration/aurora 38b2b8b via the refreshed port-307.

Conflicts, both sides kept unless noted:
- afk.c: the native26 SYSTEM/DISP0 reports without an EPIC identity
  are still ignored first, then the M5 (H17G) powerlog case, then the
  error path.
- plane.c: native26 primaries keep their single XRGB8888 format; the
  xrgb_is_alpha case follows it.
- iomfb_template.c: integration set_matrix -> brightness correction ->
  dcp_matrix_next flow is kept and the old dcp_pre_swap_a428 ext26
  skip is dropped. dcp_set_matrix_done sends native26 displays straight
  to dcp_matrix_next, since they take no brightness correction.
- run-host-tests.py: both sets of registrations.
…up harness

The merge of port-307 brought in the M5 (H17G) powerlog branch of
afk_recv_handle_init(), which reads dcp->hw.iomfb_method_profile. The
startup harness compiles that function against its own apple_dcp stub,
which had no such field, so the test no longer built. Add the field
(zero, not H17G) and the constant; the native26 paths it checks are
unchanged.
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