Repository navigation
drm/asahi: enable the calibrated 20-core T6040 GPU on J616s - #463
Merged
Merged
Conversation
Treat the OS version as a candidate-order hint. Continue to require an exact admitted loaded TEXT image and preserve #453's images list. This extends Jonathan Goyvaerts' shared identity work. Originally-by: Jonathan Goyvaerts <jonathan.goyvaerts@gmail.com> Link: #428 Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Validate version 2 of the per-chip handoff, sixteen raw OPPs and selector slots, eleven populated selectors, zero tails and base state 1. There is no single-unit fallback. The initdata patch wires the reader into probe and firmware construction so this patch adds no unused compiled items. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Wire the reader into probe and firmware construction, validating OPPs and enabled cores before firmware starts. Use the maps, leakage and power ceiling in the 25G83 objects, replacing bin-specific output hashes with layout and host encoder checks. Keep the Neo path unchanged. The old ceiling declaration remains only for the hardware-default reference removed by the next patch. Firmware uses the calibration. Retain GPL-2.0-only and the Gravity Linux encoder attribution to Cody Ho and Niklas Sheth. The original T6040 work is by Jonathan Goyvaerts. Originally-by: Jonathan Goyvaerts <jonathan.goyvaerts@gmail.com> Link: #428 Link: https://github.com/GravityLinux/linux Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Keep the structural hardware description while requiring the loader maps and power ceiling. Remove the last single-unit ceiling reference and its declaration together, keeping this commit buildable independently. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Describe the calibration binding and use loader-filled regions and OPPs. Enable the mailbox and keep the firmware domains powered while the image lives. The GPU consumer owns the PMP report vote. Booting requires the matching T6040 m1n1 handoff. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Use the current shared firmware type and extracted MMU helpers. Compare the immutable ABI prefix while independently checking the additive tail size and offsets. Keep the golden fixture bytes unchanged. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
Exercise the production reader with synthetic properties, invalid tails and OPPs. Cover candidate ordering and exact image refusal, and update G17 fixtures for current queue ownership. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
This was referenced Oct 26, 2026
RyanTheTide
marked this pull request as ready for review
October 26, 2026 05:35
erikwb
pushed a commit
to erikwb/linux
that referenced
this pull request
Oct 28, 2026
Trace calibration, firmware admission, queueing, power, recovery and memory paths against the shared Neo backend. Separate changes already present through aurora-silicon#463 and aurora-silicon#423 from firmware ABI restrictions and missing hardware measurements. Record the public-source boundary for M5 Pro. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
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.
This enables the calibrated 20-core T6040 GPU on the J616s. The existing guard admits two clusters with 20 enabled cores and refuses other core counts; that guard is unchanged. m1n1 supplies the running chip's OPPs, selector maps, leakage, core mask and power ceiling. The kernel validates the complete handoff before starting the GPU and uses those values in its 25G83 initdata. Missing or invalid calibration refuses the GPU. Firmware admission still requires an exact loaded image, including both images from #453.
The series is rebased onto integration/aurora at af80fbe. It is split into firmware selection, calibration, initdata, hardware defaults, DT and bindings, host selftests and tools. The reader is wired when its consumers are present, and the old ceiling declaration is removed with its final hardware-default reference. #453's image admission work is kept from the base rather than replayed.
The m4pro agent proved the preceding m4p11/m4p12 stack on a J616s with m1n1 c2515d6571fe2165fbc15f6c19cc606b7d296956. Firmware was admitted, Vulkan reported Apple M4 Pro (G16S B1), vkcube ran, glmark2-es2 scored 6271, and a ten-minute soak had no Asahi or DART faults. The sampled peak was 77.5 C. The tested stack used integration ff1510c, #394, the GPU branch at eda1292 and #453. Those results belong to that earlier stack. The m4p13 build of this PR head is for the final hardware gate before merge.
The independent Wi-Fi schema repair is a separate prerequisite commit from #458 because complete T6040 DT validation needs it. It does not enable the GPU. It is isolated for review and can be dropped when the GPU series is refreshed after #458 lands. The GPU series changes no Kconfig definitions and leaves the one universal asahi.config byte-for-byte unchanged from integration. The unrelated ENERGY_MODEL and THERMAL_GOV_POWER_ALLOCATOR additions remain solely in #438; the four default-governor overrides from the development branch were also dropped.
The unchanged Fedora base has an existing resolution issue: the common fragment asks for the power allocator as the default thermal governor, but Fedora disables the governor itself. #438 fixes that independent issue. This series does not add GPU-specific overrides. The gate reproduces integration's config resolution and requires the GPU head to match it exactly. Full kernel builds still use fatal compiler and DRM warnings.
The companion m1n1 PR is required. It publishes the version-2 T6040 handoff; older loaders leave the GPU unable to probe. The firmware domains stay powered while the loaded GPU image lives.
J616s CTS is still open. #455 changes the G16 governor and PMP idle floor; its interaction with this T6040 G17 path still needs a combined test. This PR does not claim that qualification.
Jonathan Goyvaerts' original T6040 bring-up and shared loaded-image identity work are retained. The 25G83 encoder constants derive from Gravity Linux work by Cody Ho and Niklas Sheth. That file retains its attribution and uses GPL-2.0-only.
Validation passed on a0a9485. Both universal and Fedora-base Image/modules/DTBs builds passed with fatal C, Rust and DRM warnings, verified from the actual compiler commands. All 8 review commits compile the Asahi driver. Asahi KUnit passed 89/89 cases across 24 suites in ARM64 QEMU. All 23 asahi-m4 and all 63 apple-dcp host groups passed without skips, using GNU make 4.4.1. The T6040 calibration and G17 host suites passed. GPU and Wi-Fi binding checks and full T6040 DT validation passed with empty diagnostics. The companion loader's 30-case fixture and fresh Rust/C chainloading release build also passed. These were CPU-only gates. The kernel builds retain pre-existing kernel-doc diagnostics and one Fedora modpost warning for pmp-report-test.ko missing MODULE_DESCRIPTION(); none refers to a file changed by this series. The loader retains nine warnings from unchanged Rust sources. No new warning suppression was added.
The exact 7.3.0-aurora-m4p13 test kernel is published with SHA256SUMS and READY for the m4pro agent's final J616s hardware gate. It includes the matching DTBs, modules and source pins. The universal asahi.config remains unchanged, including the separately documented existing Fedora governor mismatch. No merge has been performed.
Companion PR aurora-silicon/m1n1#52
Enablement inventory
The T6040 changes introduce no module parameter, kernel parameter, Kconfig definition or platform opt-in flag. The kernel's existing unconditional
apple,agx-t6040OF entry selectshw::t6040::CONFIGand the G17 backend. The board DT enables the GPU and mailbox; m1n1 honours an explicitly disabled GPU and disables it on invalid calibration. Successful fill supplies the version-2 calibration and six memory reservations. An older loader cannot satisfy the kernel's handoff validation.The existing
asahimodule exposes the following parameters. None was added or changed by this series, and no non-default value is required to enable T6040. The module must be loaded when built as a module; ordinary OF module alias loading suffices.The relevant existing Kconfig dependencies are listed below. No new or per-device Kconfig option is needed. All ordinary framework dependencies and selects remain those already declared by these symbols in the base tree.
There is no T6040
/chosenopt-in or kernel command-line dependency. The existingasahi,t6030-*,asahi,t6031-*andasahi,t8122-*chosen switches belong to other loader branches and are not consulted by the T6040 dispatch. The existing loader initialization reads ADT /chosen/firmware-version and /chosen/system-firmware-version; the T6040 fill uses the resulting OS firmware identification for apple,firmware-version on the GPU node. These are firmware data inputs, not Linux /chosen opt-ins. Ordinary boot-memory description remains a shared loader input, not an enablement switch. Noasahi.*=argument is required.nomodesetaffects the pre-existing display handoff, not the T6040 GPU match; native on-screen presentation needs the existing DCP display path, which is not modified here.panic_on_warn=1,kunit.filter_glob=asahi*,kunit.enable=1,console=ttyAMA0andkunit_shutdown=rebootare the existing parameters used only by the ARM64 QEMU KUnit gate; none enables a physical GPU.The required GPU-node properties (including
apple,t6040-handoff-version = 2, OPP tables, maps, leakage, power ceiling, core mask, firmware version and memory regions) describe validated hardware and firmware state. They are not operator opt-in flags. The admitted loaded TEXT images from #453 and the two-cluster, 20-enabled-core match data remain required. There is no firmware-admission bypass parameter on this path. DT power-domain retention and structural UAT quirks are compatible match data, not runtime flags.The two DT apple,always-on properties retain the existing AFR and GFX PMGR domains while the loaded firmware image lives. They use the existing power-domain binding and are required for that lifetime; the PMP GPU report vote remains owned by the GPU consumer. They are not a new user-selectable platform-enable mechanism.
The package also verifies the existing distro/other-device settings SECURITY_SELINUX, NF_TABLES, BINFMT_MISC, USERFAULTFD, NTSYNC, INPUT_UINPUT, HIDRAW, ZRAM, WIREGUARD, ARM64_USER4K_EXPERIMENTAL, APPLE_SEP, MT7932_FULLMAC, BRCMFMAC and APPLE_PMC. These are preservation checks on the common recipe, not new GPU requirements or additions to asahi.config.
The QEMU execution kernel promotes DRM_ASAHI and APPLE_PMP from modules to built-in solely to run their tests in the booted image. The published Fedora candidate keeps the common fragment’s modular driver and supplier settings. These test-mode promotions add no new Kconfig definition or per-device fragment.