drm/sched: make sure timer is restarted
authorChristian König <christian.koenig@amd.com>
Fri, 12 Oct 2018 14:32:40 +0000 (16:32 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Nov 2018 19:21:01 +0000 (14:21 -0500)
Make sure we always restart the timer after a timeout and remove the
device specific workarounds.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/etnaviv/etnaviv_sched.c
drivers/gpu/drm/scheduler/sched_main.c
drivers/gpu/drm/v3d/v3d_sched.c

index e7c3ed6..f8c5f1e 100644 (file)
@@ -105,8 +105,6 @@ static void etnaviv_sched_timedout_job(struct drm_sched_job *sched_job)
        change = dma_addr - gpu->hangcheck_dma_addr;
        if (change < 0 || change > 16) {
                gpu->hangcheck_dma_addr = dma_addr;
-               schedule_delayed_work(&sched_job->sched->work_tdr,
-                                     sched_job->sched->timeout);
                return;
        }
 
index 44fe587..73449c6 100644 (file)
@@ -283,6 +283,7 @@ static void drm_sched_job_timedout(struct work_struct *work)
 already_signaled:
                ;
        }
+       drm_sched_start_timeout(sched);
        spin_unlock(&sched->job_list_lock);
 }
 
index 9243dea..80b641f 100644 (file)
@@ -167,9 +167,6 @@ v3d_job_timedout(struct drm_sched_job *sched_job)
        if (job->timedout_ctca != ctca || job->timedout_ctra != ctra) {
                job->timedout_ctca = ctca;
                job->timedout_ctra = ctra;
-
-               schedule_delayed_work(&job->base.sched->work_tdr,
-                                     job->base.sched->timeout);
                return;
        }