Skip to content

Commit 8e8d76f

Browse files
tejasuplucasdemarchi
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: 18fbd56 ("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>
1 parent 45f5a1e commit 8e8d76f

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
@@ -1254,11 +1254,11 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)
12541254
xe_pm_runtime_get(guc_to_xe(guc));
12551255
trace_xe_exec_queue_destroy(q);
12561256

1257+
release_guc_id(guc, q);
12571258
if (xe_exec_queue_is_lr(q))
12581259
cancel_work_sync(&ge->lr_tdr);
12591260
/* Confirm no work left behind accessing device structures */
12601261
cancel_delayed_work_sync(&ge->sched.base.work_tdr);
1261-
release_guc_id(guc, q);
12621262
xe_sched_entity_fini(&ge->entity);
12631263
xe_sched_fini(&ge->sched);
12641264

0 commit comments

Comments
 (0)