Skip to content

drm/asahi: enable J613 extended firmware render and retirement - #307

Closed
satchlj wants to merge 9 commits into
omacom:integration/aurorafrom
satchlj:gpu26-render-20261030
Closed

satchlj wants to merge 9 commits into
omacom:integration/aurorafrom
satchlj:gpu26-render-20261030

Conversation

@satchlj

@satchlj satchlj commented Oct 31, 2026 •

Copy link
Copy Markdown

Part 5 of 5 of the T8122 (M3) GPU support series for macOS 26.6.2 firmware ("GPU26"). The parts are stacked: this PR contains parts 1 to 5, so review only its last commit; earlier commits are reviewed in the earlier PRs. The series is based on #301 and #302, so it includes their prerequisite commits until they land; a working boot also needs omacom/m1n1#20. Extended firmware support stays switched off until part 5.

Encode extended tiler and fragment work, scene records, independent notifications and attachment visibility through the existing runtime. Retire native pools and enable only the exact J613 26.6.2 profile. Keep the public UAPI and physical G15 stream formats unchanged.

The C13k MMU fix is folded into this final review commit, which introduces the Extended render allocation policy: the two client GPU parameter-table aliases use GPU-only cached mappings. Firmware continues to use its existing canonical uncached aliases. This prevents normal retired render-cache eviction from entering the cached firmware-alias teardown guard and latching shared-UAT failure. Legacy mappings and the MMU safety latch are unchanged. A production-allocation/PTE regression test covers the fix and all Legacy allocations. Per-eviction diagnostic printk instrumentation is omitted.

Hardware evidence: on the owner's combined C13k kernel, rubra (M3 Air J613, firmware 26.6.2) completed 5,162 observed render-cache evictions without an MMU failure. glmark2, OpenGL 4.6 and Vulkan ran on the M3 GPU; suspend, display and camera were functional. This qualifies the C13k alias correction; this exact upstream PR head has not been hardware-booted.

Validation of this updated head: the full W=1 arm64 build completed Image, modules (including the enabled T8122 Asahi module through link and BTF) and DTBs on neo-build. All eight selected series host suites pass; runtime (78 tests) and firmware (21 tests) also pass in optimized builds. Reverting the alias override makes the new regression test fail in both debug and optimized builds after successful compilation. KUnit passes 145 suites, with 1,734 passing cases, three expected skips, zero failures and no kernel splats inside cases. #303–#306 retain their existing heads; part 5 remains one final review commit above #306. No new hardware boot of this exact upstream head was performed.

That machine now runs this kernel daily.

Previous parts: #303, #304, #305, #306.

Use the PMGR provider active-state predicate when checking inherited
display power. DISP_CPU can report ACTUAL=4 with AUTO_ENABLE and
TARGET=15 after automatic clock gating. Keep the checks read-only and
preserve all other handoff requirements.

Test all actual, target and automatic-state combinations and the
captured J613 state through the production helper.

Signed-off-by: Satya Benson <satya@benson.earth>
The 25G83 device tree advertises the AGX-specific compatible followed by
asc-mailbox-v4. Both bind the same mailbox operations. Admit this exact
pair while retaining all resource and identity checks.

Exercise the production rejection predicate with public-DTS fixtures and
resource mutations; allow optional local DT captures for reproduction.

Signed-off-by: Satya Benson <satya@benson.earth>
Cross all 512 ACTUAL/TARGET/AUTO combinations with zero, all-set,
alternating and individual unrelated-bit patterns. This verifies that
readiness ignores every bit outside the three PMGR fields.

A temporary ACTUAL mask widened from GENMASK(7, 4) to GENMASK(8, 4)
passes the old cases but fails the new ones at both -O0 and -O2.
Make the unoptimized compiler flag explicit and report failing words.

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

Separate firmware identity, HAL metadata and VM bounds from physical
G15G stream selection. Add checked root and owned IO descriptor encoders.
Introduce slot 28 at SGX+0xd50000 with a production-writer regression;
the shifted T8132 bank is never introduced. Keep VM padding zero.

Signed-off-by: Satya Benson <satya@benson.earth>
Build extended initialization owners, controller images and channel
records with checked allocation spans. Publish the bounded loader table
through existing M3 ownership. Keep extended runtime admission closed.

Signed-off-by: Satya Benson <satya@benson.earth>
Construct native queue, pool, context and notifier records. Read
controller inputs from the admitted OPP handoff, preserve nanosecond
durations and reject unsupported optional flags. Prepare native startup
without enabling extended admission.

Signed-off-by: Satya Benson <satya@benson.earth>
Dispatch extended firmware compute records through the existing M3
runtime while preserving G15 CDM streams. Retain owned pool backing and
leave firmware-managed register setup to the extended interface.

Signed-off-by: Satya Benson <satya@benson.earth>
Encode extended tiler and fragment work, scene records, independent
notifications and attachment visibility through the existing runtime.
Retire native pools and enable only the exact J613 26.6.2 profile.
Keep the public UAPI and physical G15 stream formats unchanged.

Signed-off-by: Satya Benson <satya@benson.earth>
@satchlj
satchlj force-pushed the gpu26-render-20261030 branch from 99b74c9 to e745310 Compare November 3, 2026 22:53
@satchlj

satchlj commented Nov 3, 2026

Copy link
Copy Markdown
Author

Folded the C13k MMU alias correction into part 5, where the Extended render allocation policy is introduced. The two client parameter-table aliases are GPU-only cached mappings; firmware retains its existing canonical uncached aliases. Legacy mappings and the shared MMU safety latch are unchanged. The production-layout/PTE regression test is included; per-eviction diagnostic logging is omitted.

On the owner's combined C13k kernel (J613 M3 Air, firmware 26.6.2), 5,162 observed render-cache evictions completed without an MMU failure; glmark2, OpenGL 4.6 and Vulkan ran on the M3 GPU. Suspend, display and camera also worked. This is hardware evidence for the C13k fix, not a boot of this exact upstream PR head. Draft status remains for the owner.

Written by Claude on @satchlj's behalf.

@satchlj

satchlj commented Nov 11, 2026

Copy link
Copy Markdown
Author

Claude Fable 5.2 on @satchlj's behalf

Closing in favour of aurora-silicon/linux#969, which carried this change to aurora-silicon/linux integration/aurora and is merged.

@satchlj satchlj closed this Nov 11, 2026
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