Repository navigation
drm/asahi: g17: accept ray traversal on 25G83 - #837
Merged
RyanTheTide merged 1 commit intoNov 3, 2026
Merged
RyanTheTide merged 1 commit into
RyanTheTide merged 1 commit into
Conversation
Ray-traversal work is refused on the M4 Pro's 25G83 firmware because a stalled traversal was thought to wedge the GPU with no firmware recovery. That does not reproduce. A BLAS overwritten with a node cycle got a firmware reason-0 recovery in 1.76 s from a compute shader and 0.12 s from a fragment shader, with no MMU fault, and the GPU worked afterwards. Valid traversals are not cut off: one ray that must visit every leaf ran correctly for 31 s in compute and 14 s in fragment, and 16,384 of them finished in a 5 s fragment job. A compute job stops at the driver's own 38 s limit in timeout.rs, and only that client fails. The Vulkan ray tracing CTS lists, 74,833 cases, gave 49,711 Pass, 25,122 NotSupported, 0 Fail and 0 GPU recoveries with the Mesa fixes in aurora-silicon/mesa#139. Two limits remain. A recovery can still fail a running render of another client, as with any GPU hang. And all render work waits behind a fragment job, so a fragment traversal of many seconds freezes the desktop, and past about 24 s the compositor fails with ETIMEDOUT. Signed-off-by: Jonathan Goyvaerts <jonathan.goyvaerts@gmail.com> Assisted-by: LLM
Contributor
|
Hardware evidence from tonight. The merge itself waits for this PR to be retargeted to integration/aurora, which is with Ryan. J616s (M4 Pro, 25G83) one-shot of 7.3.0-aurora-prr1103c = integration/aurora f153499 + this PR + #790 + #731, boot 6a127964:
|
Contributor
|
Merged after a J616s one-shot of 7.3.0-aurora-m4t1103a (integration/aurora 19f71a1 + this PR + #879 + #884), boot c9c549d5:
The result from last night's prr1103c boot still holds. The base moved only by #877, #865 and #867, none of which touch |
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.
Accepts ray traversal on the M4 Pro's 25G83 firmware, so Mesa exposes
VK_KHR_ray_queryandVK_KHR_ray_tracing_pipelinethere. It is one switch:ray_traversalinV25G83, whichcommand.rsandRENDER_RAY_QUERYinmod.rsread. The comment beside it goes with it, because the wedge it describes does not reproduce.V26A428has no comment on this field either.Mesa needs aurora-silicon/mesa#139 for a clean CTS run. Without it 5 cases fail, and procedural spheres render inside out. The two PRs can land in either order.
Testing, M4 Pro (J616s, T6040), firmware 25G83
ray-query,ray-tracing-pipelineand the acceleration structure cases ofbinding-modelandapi, 74,833 cases: 49,711 Pass, 25,122 NotSupported, 0 Fail, 0 GPU recoveries, in about 10 minutes at 8 jobs with no reboot, with everything that did not pass there run again alone. About 90% of the NotSupported cases are opacity micromaps.Limits that stay
ETIMEDOUT, which istimeout.rs: 2 s * (1 + 4 execution + 14 shared renewals). Only that client fails. By the code an otherwise idle GPU gives 10 s; I did not measure that.ETIMEDOUTand so did what waited behind it: Hyprland lost its device after about 24 s and the session had to be rebooted. Ordinary frames take milliseconds, so this takes one render that runs for many seconds. The extra allowance for ray work is what makes it reachable.t3coderender withECANCELED. That run had drm/asahi: g17: keep innocent clients alive across another client's recovery #803 applied, and drm/asahi: g17: keep innocent clients alive across another client's recovery #803 leaves work the firmware lists as interrupted failing.LowerVa, and with games open alsoLogicalQueuesandComputeReserve). Every affected case passes alone. Those refusals happen without traversal too.What this was tested on
Not stock
aurora-wip. The kernels were52f0a6beeplus our carried patches, with our J616s device tree.drivers/gpu/drm/asahi, the DRM UAPI andrust/kernelare unchanged between52f0a6beeand this base. On the driver our tree carries: client names in failure reports, #803 with the ENODATA fix, MMU fault banks in the recovery log, and theasahidriver name. None of them touches ray traversal. The sweep and the stalls ran with an equivalent test parameter on m4.101, the long traversal and the application with this change on m4.102.