Skip to content

Commit 10c7988

Browse files
tejasuprodrigovivi
authored andcommitted
drm/xe: Release guc ids before cancelling work
A GT resets can be occurring in parallel while cancelling work in async call which can requeue these workers. to avoid that, lets first release guc ids and then cancel work so they don't requeued. Fixes: 8ae8a2e ("drm/xe: Long running job update") Fixes: 12c2f96 ("drm/xe: cancel pending job timer before freeing scheduler") Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Suggested-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250306131211.975503-1-tejas.upadhyay@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> (cherry picked from commit 8e8d76f) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent 80e54e8 commit 10c7988

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpu/drm/xe/xe_guc_submit.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1246,11 +1246,11 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)
12461246
xe_pm_runtime_get(guc_to_xe(guc));
12471247
trace_xe_exec_queue_destroy(q);
12481248

1249+
release_guc_id(guc, q);
12491250
if (xe_exec_queue_is_lr(q))
12501251
cancel_work_sync(&ge->lr_tdr);
12511252
/* Confirm no work left behind accessing device structures */
12521253
cancel_delayed_work_sync(&ge->sched.base.work_tdr);
1253-
release_guc_id(guc, q);
12541254
xe_sched_entity_fini(&ge->entity);
12551255
xe_sched_fini(&ge->sched);
12561256

0 commit comments

Comments
 (0)