Skip to content

drm/asahi: keep G17 long jobs alive beside other long jobs - #499

Merged
DjDeveloperr merged 1 commit into
integration/aurorafrom
fix/g17-watchdog-long-sharing-20261026
Oct 27, 2026
Merged

DjDeveloperr merged 1 commit into
integration/aurorafrom
fix/g17-watchdog-long-sharing-20261026

Conversation

@DjDeveloperr

Copy link
Copy Markdown
Contributor

The G17 watchdog renews a published job's deadline, up to thirty seconds in all, while some command retired within the last five seconds: the GPU is then shared, not hung. A ray traversal dispatch beside another one gets no such renewal, because neither retires anything until it ends, even though both progress. Each gets only the ten seconds a long job has without it.

On Neo, dEQP-VK.ray_query.stress.geometry_shader.triangles takes about 6.3 s alone. Two copies side by side took 10 to 17 s each, and the watchdog failed 18 of 28 runs in three minutes with ETIMEDOUT. Their clients lost the device. The same timeout appears in 6-worker RT CTS runs whenever two traversal-heavy cases overlap.

This change also counts the GPU as shared while a long job (ray traversal or AS build) of another queue runs beside a long job. The thirty-second bound is unchanged, so a pair that never finishes still fails.

Testing

Neo (A18 Pro), Mesa agx3 at #62's head, this commit on integration/aurora at #423's merge:

  • Two copies of ray_query.stress.geometry_shader.{triangles,aabbs} side by side for three minutes: 24 runs, all pass, no watchdog timeouts; each took 14 to 18 s. Without this change, the same leg failed 18 of 28 runs with ETIMEDOUT.
  • Regression gate passes.
  • Targeted CTS (5368 cases): 4687 pass, 681 not supported, 0 fail.
  • Ray query and ray tracing pipeline CTS groups at 6 workers (57190 cases): 47100 pass, 10088 not supported, 0 fail. Two host-built 1M-primitive acceleration-structure cases were killed for memory exhaustion, as on the base.
  • No asahi or G17 kernel errors.

A published job's deadline is renewed, up to thirty seconds, while some
command retired within the last five seconds: the GPU is then shared,
not hung. Two ray traversal dispatches side by side retire nothing until
they end, though both progress. Alone each took about 6.3 s; side by
side they took 10 to 17 s, past the ten seconds a long job gets without
that renewal, so the watchdog failed most of them with ETIMEDOUT and
their clients lost the device.

Also count the GPU as shared while a long job of another queue runs
beside a long job. The thirty-second bound still ends a pair that never
finishes.
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