Commit 75973e58 authored by Andrey Grodzovsky's avatar Andrey Grodzovsky
Browse files

drm/sched: Make timeout timer rearm conditional.



We don't want to rearm the timer if driver hook reports
that the device is gone.

v5: Update drm_gpu_sched_stat values in code.

Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210512142648.666476-11-andrey.grodzovsky@amd.com
parent f89f8c6b
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -314,6 +314,7 @@ static void drm_sched_job_timedout(struct work_struct *work)
{
	struct drm_gpu_scheduler *sched;
	struct drm_sched_job *job;
	enum drm_gpu_sched_stat status = DRM_GPU_SCHED_STAT_NOMINAL;

	sched = container_of(work, struct drm_gpu_scheduler, work_tdr.work);

@@ -331,7 +332,7 @@ static void drm_sched_job_timedout(struct work_struct *work)
		list_del_init(&job->list);
		spin_unlock(&sched->job_list_lock);

		job->sched->ops->timedout_job(job);
		status = job->sched->ops->timedout_job(job);

		/*
		 * Guilty job did complete and hence needs to be manually removed
@@ -345,10 +346,12 @@ static void drm_sched_job_timedout(struct work_struct *work)
		spin_unlock(&sched->job_list_lock);
	}

	if (status != DRM_GPU_SCHED_STAT_ENODEV) {
		spin_lock(&sched->job_list_lock);
		drm_sched_start_timeout(sched);
		spin_unlock(&sched->job_list_lock);
	}
}

 /**
  * drm_sched_increase_karma - Update sched_entity guilty flag