Commit dd1ef5e2 authored by Matthew Brost's avatar Matthew Brost
Browse files

drm/xe: Only toggle scheduling in TDR if GuC is running



If the firmware is not running during TDR (e.g., when the driver is
unloading), there's no need to toggle scheduling in the GuC. In such
cases, skip this step.

v4:
 - Bail on wait UC not running (Niranjana)

Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Link: https://patch.msgid.link/20260110012739.2888434-4-matthew.brost@intel.com
parent 95f27831
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1638,7 +1638,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
		if (exec_queue_reset(q))
			err = -EIO;

		if (!exec_queue_destroyed(q)) {
		if (!exec_queue_destroyed(q) && xe_uc_fw_is_running(&guc->fw)) {
			/*
			 * Wait for any pending G2H to flush out before
			 * modifying state
@@ -1673,6 +1673,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
		 */
		smp_rmb();
		ret = wait_event_timeout(guc->ct.wq,
					 !xe_uc_fw_is_running(&guc->fw) ||
					 !exec_queue_pending_disable(q) ||
					 xe_guc_read_stopped(guc) ||
					 vf_recovery(guc), HZ * 5);