From: Balasubramani Vivekanandan Date: Mon, 3 Nov 2025 12:31:46 +0000 (+0530) Subject: drm/xe/gt: Synchronize GT reset with device unbind X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=09c452d1171fcb86c57e4996bdebc311e1217f8a;p=thirdparty%2Fkernel%2Flinux.git drm/xe/gt: Synchronize GT reset with device unbind When unbinding wait for any GT reset in progress to complete. Unbinding will release the mmio mapping but mmio operations are performed during GT reset causing Kernel panic. Cc: Lucas De Marchi Cc: Matthew Brost Signed-off-by: Balasubramani Vivekanandan Reviewed-by: Matthew Brost Reviewed-by: Lucas De Marchi Link: https://patch.msgid.link/20251103123144.3231829-5-balasubramani.vivekanandan@intel.com Signed-off-by: Lucas De Marchi --- diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c index 60bac65c8b9d7..e008e3c1bf680 100644 --- a/drivers/gpu/drm/xe/xe_gt.c +++ b/drivers/gpu/drm/xe/xe_gt.c @@ -607,6 +607,13 @@ static void xe_gt_fini(void *arg) struct xe_gt *gt = arg; int i; + if (disable_work_sync(>->reset.worker)) + /* + * If gt_reset_worker was halted from executing, take care of + * releasing the rpm reference here. + */ + xe_pm_runtime_put(gt_to_xe(gt)); + for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i) xe_hw_fence_irq_finish(>->fence_irq[i]);