Patch "drm/xe: cancel pending job timer before freeing scheduler" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/xe: cancel pending job timer before freeing scheduler

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-xe-cancel-pending-job-timer-before-freeing-sched.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4bffe64c241308d2e8fc77450f4818c04bfdd097
Author: Tejas Upadhyay <tejas.upadhyay@xxxxxxxxx>
Date:   Tue Feb 25 10:27:54 2025 +0530

    drm/xe: cancel pending job timer before freeing scheduler
    
    [ Upstream commit 12c2f962fe71f390951d9242725bc7e608f55927 ]
    
    The async call to __guc_exec_queue_fini_async frees the scheduler
    while a submission may time out and restart. To prevent this race
    condition, the pending job timer should be canceled before freeing
    the scheduler.
    
    V3(MattB):
     - Adjust position of cancel pending job
     - Remove gitlab issue# from commit message
    V2(MattB):
     - Cancel pending jobs before scheduler finish
    
    Fixes: a20c75dba192 ("drm/xe: Call __guc_exec_queue_fini_async direct for KERNEL exec_queues")
    Reviewed-by: Matthew Brost <matthew.brost@xxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250225045754.600905-1-tejas.upadhyay@xxxxxxxxx
    Signed-off-by: Tejas Upadhyay <tejas.upadhyay@xxxxxxxxx>
    (cherry picked from commit 18fbd567e75f9b97b699b2ab4f1fa76b7cf268f6)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index fed23304e4da5..3fd2b28b91ab9 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1215,6 +1215,8 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)
 
 	if (xe_exec_queue_is_lr(q))
 		cancel_work_sync(&ge->lr_tdr);
+	/* Confirm no work left behind accessing device structures */
+	cancel_delayed_work_sync(&ge->sched.base.work_tdr);
 	release_guc_id(guc, q);
 	xe_sched_entity_fini(&ge->entity);
 	xe_sched_fini(&ge->sched);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux