diff options
| author | Varun Gupta <varun.gupta@intel.com> | 2026-09-30 15:10:33 +0530 |
|---|---|---|
| committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2026-10-01 08:46:21 -0400 |
| commit | 1c9b88eb8e10ffdb4e6107aaaa3f2581dd1ed3e4 (patch) | |
| tree | 3560d0e834a592d6de3035988ed440fb13366ab8 /tools/perf/scripts/python | |
| parent | 64455314d641639db5b077129849fb00357334bc (diff) | |
| download | linux-1c9b88eb8e10ffdb4e6107aaaa3f2581dd1ed3e4.tar.gz linux-1c9b88eb8e10ffdb4e6107aaaa3f2581dd1ed3e4.zip | |
drm/xe: Park on the ULLS semaphore before publishing the next job's tail
The ULLS postamble publishes the next job's ring tail and only then
parks on that job's semaphore. The CS fetches ring contents up to the
tail while parked, so it can fetch the next job's slot while it still
holds padding NOOPs. When the CPU later writes the job and signals the
semaphore, the CS executes the stale fetch, drains to the tail and
idles. The job never runs and its fence never signals.
This is hit whenever the CS parks before the next chained job is
written, e.g. when there is a pause between entering ULLS and the next
migration job. A lost ULLS_EXIT is silent as the next job's seqno write
covers its fence, but a lost ULLS_ACTIVE hangs the migration queue and
the subsequent kernel job timeout wedges the device.
Park first and publish the tail after the wait. The CS never fetches
beyond RING_TAIL, so the next slot cannot be fetched until the job is
in place. This puts the non-posted tail write on the wake-up path,
which the original order was chosen to avoid, but that order is not
safe.
Fixes: 6ec0b87160be ("drm/xe: Add ULLS migration job support to ring ops")
Cc: Matthew Brost <matthew.brost@intel.com>
Assisted-by: LLM
Signed-off-by: Varun Gupta <varun.gupta@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260930094031.3365707-6-varun.gupta@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
