]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/guc: Synchronize Dead CT worker with unbind
authorBalasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Mon, 3 Nov 2025 12:31:47 +0000 (18:01 +0530)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 7 Nov 2025 11:01:54 +0000 (03:01 -0800)
Cancel and wait for any Dead CT worker to complete before continuing
with device unbinding. Else the worker will end up using resources freed
by the undind operation.

Cc: Zhanjun Dong <zhanjun.dong@intel.com>
Fixes: d2c5a5a926f4 ("drm/xe/guc: Dead CT helper")
Signed-off-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Link: https://patch.msgid.link/20251103123144.3231829-6-balasubramani.vivekanandan@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
(cherry picked from commit 492671339114e376aaa38626d637a2751cdef263)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_guc_ct.c

index 18f6327bf5527a5756b57520ff21f632e70c5627..283d846c35129dfe65ac9c36c8629e8d2e82ea47 100644 (file)
@@ -200,6 +200,9 @@ static void guc_ct_fini(struct drm_device *drm, void *arg)
 {
        struct xe_guc_ct *ct = arg;
 
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
+       cancel_work_sync(&ct->dead.worker);
+#endif
        ct_exit_safe_mode(ct);
        destroy_workqueue(ct->g2h_wq);
        xa_destroy(&ct->fence_lookup);