Skip to content

drm/asahi: g17: keep an exited owner's compute backing until another VM needs the queue - #1503

Merged
RyanTheTide merged 1 commit into
integration/aurorafrom
gpu/g17-keep-exited-owner-compute-backing
Nov 11, 2026
Merged

RyanTheTide merged 1 commit into
integration/aurorafrom
gpu/g17-keep-exited-owner-compute-backing

Conversation

@RyanTheTide

Copy link
Copy Markdown
Contributor

detach_exited_owner() marked every idle compute queue whose owner exited for fresh backing, so each short-lived process's queue went through a pool release and re-arm right after its owner left. On the Neo (G17P), a long Vulkan CTS session then retired a compute command on its completion record without a completion stamp, and every later client's work timed out (ETIMEDOUT, g17/runtime/backend.rs:235) until reboot.

The per-VM tie does not need the eager release: pool_serves() already refuses to bind the backing for a VM other than the one it served, and the QID-pressure path marks a queue serving another VM for fresh backing before that VM may use it. This keeps the exited owner's backing tied to its VM and leaves the release to that path.

Fixes: b3b02e2 ("drm/asahi: g17: Fix compute scratch leaking across processes on queue reuse")

Tests (Neo, J700/G17P, Mesa c208afc352, Vulkan CTS 1.4.7.0)

Each session: fresh boot, the 36,127-case CTS slice with 4 deqp-vk processes, then 30 runs of three dEQP-VK.synchronization{,2}.timeline_semaphore.one_to_n.* cases.

kernel sessions sessions with device loss
integration fc0a069 1 1 (1 in the slice, 8 of 30 runs)
fc0a069 + this change 5 0 (0 ETIMEDOUT)

Bisect of the same test over the first-parent chain of #1012 (GPU driver files of commit X on the same base): 1472610 good (3 sessions clean), b3b02e2 bad.

🤖 Generated with Claude Code

…VM needs the queue

detach_exited_owner() marked every idle compute queue whose owner exited
for fresh backing, so each short-lived process's queue went through a
pool release and re-arm right after its owner left. On the Neo (G17P),
a long Vulkan CTS session then retired a compute command on its
completion record without a completion stamp, and from there every
later client's work timed out (ETIMEDOUT) until reboot.

The per-VM tie does not need the eager release: pool_serves() already
refuses to bind the backing for any VM other than the one it served,
and the QID-pressure path marks a queue serving another VM for fresh
backing before that VM may use it. Keep the exited owner's backing tied
to its VM and leave the release to that path.

Same order on the Neo (fresh boot, 36,127-case CTS slice with 4
deqp-vk processes, then 30 runs of three timeline semaphore one_to_n
cases): integration fc0a069 lost the device in the slice and in 8 of
the 30 runs; with this change, 5 of 5 sessions had no device loss and
no ETIMEDOUT.

Fixes: b3b02e2 ("drm/asahi: g17: Fix compute scratch leaking across processes on queue reuse")
Assisted-by: LLM
Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
@RyanTheTide
RyanTheTide merged commit 48ddb48 into integration/aurora Nov 11, 2026
1 check passed
@RyanTheTide
RyanTheTide deleted the gpu/g17-keep-exited-owner-compute-backing branch November 11, 2026 01:03
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