drm/scheduler: don't update last scheduled fence in TDR
authorPixel Ding <Pixel.Ding@amd.com>
Wed, 25 Apr 2018 02:52:45 +0000 (22:52 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 May 2018 18:44:05 +0000 (13:44 -0500)
The current sequence in scheduler thread is:
1. update last sched fence
2. job begin (adding to mirror list)
3. job finish (remove from mirror list)
4. back to 1

Since we update last sched prior to joining mirror list, the jobs
in mirror list already pass the last sched fence. TDR just run
the jobs in mirror list, so we should not update the last sched
fences in TDR.

Signed-off-by: Pixel Ding <Pixel.Ding@amd.com>
Reviewed-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/scheduler/gpu_scheduler.c

index 088ff2b4e8fbbb8378d41f525a8e025e16296942..1f1dd70125a7ac7567527e703bf317a6c7b900ee 100644 (file)
@@ -575,9 +575,6 @@ void drm_sched_job_recovery(struct drm_gpu_scheduler *sched)
                fence = sched->ops->run_job(s_job);
                atomic_inc(&sched->hw_rq_count);
 
-               dma_fence_put(s_job->entity->last_scheduled);
-               s_job->entity->last_scheduled = dma_fence_get(&s_fence->finished);
-
                if (fence) {
                        s_fence->parent = dma_fence_get(fence);
                        r = dma_fence_add_callback(fence, &s_fence->cb,