diff options
author | Christian König <christian.koenig@amd.com> | 2018-11-22 13:57:15 +0300 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-11-28 23:49:58 +0300 |
commit | 68c12d24ce26ae7cabc671230a4e390e902005c1 (patch) | |
tree | af5f8451ea282a9ed0e7daae38c6f6282f902e9c | |
parent | 3198ec5dfc7207b7977c8258f7d07fe423d7dfcd (diff) | |
download | linux-68c12d24ce26ae7cabc671230a4e390e902005c1.tar.xz |
drm/sched: revert "fix timeout handling v2" v2
This reverts commit 0efd2d2f68cd5dbddf4ecd974c33133257d16a8e.
It's still causing problems for V3D.
v2: keep rearming the timeout.
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/scheduler/sched_main.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index 6fedf9544bbf..9d4cd196037a 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -263,40 +263,15 @@ static void drm_sched_job_timedout(struct work_struct *work) { struct drm_gpu_scheduler *sched; struct drm_sched_job *job; - int r; sched = container_of(work, struct drm_gpu_scheduler, work_tdr.work); - - spin_lock(&sched->job_list_lock); - list_for_each_entry_reverse(job, &sched->ring_mirror_list, node) { - struct drm_sched_fence *fence = job->s_fence; - - if (!dma_fence_remove_callback(fence->parent, &fence->cb)) - goto already_signaled; - } - job = list_first_entry_or_null(&sched->ring_mirror_list, struct drm_sched_job, node); - spin_unlock(&sched->job_list_lock); if (job) - sched->ops->timedout_job(job); + job->sched->ops->timedout_job(job); spin_lock(&sched->job_list_lock); - list_for_each_entry(job, &sched->ring_mirror_list, node) { - struct drm_sched_fence *fence = job->s_fence; - - if (!fence->parent || !list_empty(&fence->cb.node)) - continue; - - r = dma_fence_add_callback(fence->parent, &fence->cb, - drm_sched_process_job); - if (r) - drm_sched_process_job(fence->parent, &fence->cb); - -already_signaled: - ; - } drm_sched_start_timeout(sched); spin_unlock(&sched->job_list_lock); } |