aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/etnaviv/etnaviv_sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/etnaviv/etnaviv_sched.c')
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_sched.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
index e7c3ed6c9a2e..49a6763693f1 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
@@ -93,7 +93,7 @@ static void etnaviv_sched_timedout_job(struct drm_sched_job *sched_job)
93 * If the GPU managed to complete this jobs fence, the timout is 93 * If the GPU managed to complete this jobs fence, the timout is
94 * spurious. Bail out. 94 * spurious. Bail out.
95 */ 95 */
96 if (fence_completed(gpu, submit->out_fence->seqno)) 96 if (dma_fence_is_signaled(submit->out_fence))
97 return; 97 return;
98 98
99 /* 99 /*
@@ -105,8 +105,6 @@ static void etnaviv_sched_timedout_job(struct drm_sched_job *sched_job)
105 change = dma_addr - gpu->hangcheck_dma_addr; 105 change = dma_addr - gpu->hangcheck_dma_addr;
106 if (change < 0 || change > 16) { 106 if (change < 0 || change > 16) {
107 gpu->hangcheck_dma_addr = dma_addr; 107 gpu->hangcheck_dma_addr = dma_addr;
108 schedule_delayed_work(&sched_job->sched->work_tdr,
109 sched_job->sched->timeout);
110 return; 108 return;
111 } 109 }
112 110
@@ -127,6 +125,8 @@ static void etnaviv_sched_free_job(struct drm_sched_job *sched_job)
127{ 125{
128 struct etnaviv_gem_submit *submit = to_etnaviv_submit(sched_job); 126 struct etnaviv_gem_submit *submit = to_etnaviv_submit(sched_job);
129 127
128 drm_sched_job_cleanup(sched_job);
129
130 etnaviv_submit_put(submit); 130 etnaviv_submit_put(submit);
131} 131}
132 132
@@ -159,6 +159,7 @@ int etnaviv_sched_push_job(struct drm_sched_entity *sched_entity,
159 submit->out_fence, 0, 159 submit->out_fence, 0,
160 INT_MAX, GFP_KERNEL); 160 INT_MAX, GFP_KERNEL);
161 if (submit->out_fence_id < 0) { 161 if (submit->out_fence_id < 0) {
162 drm_sched_job_cleanup(&submit->sched_job);
162 ret = -ENOMEM; 163 ret = -ENOMEM;
163 goto out_unlock; 164 goto out_unlock;
164 } 165 }