]> www.infradead.org Git - users/hch/misc.git/commit
drm/xe: Don't initialize fences at xe_sched_job_create()
authorThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 27 May 2024 13:59:10 +0000 (15:59 +0200)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 27 May 2024 19:26:03 +0000 (21:26 +0200)
commit0ac7a2c745e8a42803378b944fa0f4455b7240f6
tree0a8db09d4cbf1d673b9b2b3e8dbeaa629b80feba
parente183910ae4015214475b3248ce0b4c70f104f254
drm/xe: Don't initialize fences at xe_sched_job_create()

Pre-allocate but don't initialize fences at xe_sched_job_create(),
and initialize / arm them instead at xe_sched_job_arm(). This
makes it possible to move xe_sched_job_create() with its memory
allocation out of any lock that is required for fence
initialization, and that may not allow memory allocation under it.

Replaces the struct dma_fence_array for parallell jobs with a
struct dma_fence_chain, since the former doesn't allow
a split-up between allocation and initialization.

v2:
- Rebase.
- Don't always use the first lrc when initializing parallel
  lrc fences.
- Use dma_fence_chain_contained() to access the lrc fences.

v4:
- Add an assert that job->lrc_seqno == fence->seqno.
  (Matthew Brost)

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> #v2
Link: https://patchwork.freedesktop.org/patch/msgid/20240527135912.152156-4-thomas.hellstrom@linux.intel.com
drivers/gpu/drm/xe/xe_exec_queue.c
drivers/gpu/drm/xe/xe_exec_queue_types.h
drivers/gpu/drm/xe/xe_ring_ops.c
drivers/gpu/drm/xe/xe_sched_job.c
drivers/gpu/drm/xe/xe_sched_job_types.h
drivers/gpu/drm/xe/xe_trace.h