diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index 097ea187d08e..046686a83699 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -910,7 +910,6 @@ drm_sched_select_entity(struct drm_gpu_scheduler *sched) * drm_sched_get_finished_job - fetch the next finished job to be destroyed * * @sched: scheduler instance - * @have_more: are there more finished jobs on the list * * Informs the caller through @have_more whether there are more finished jobs * besides the returned one. @@ -919,7 +918,7 @@ drm_sched_select_entity(struct drm_gpu_scheduler *sched) * ready for it to be destroyed. */ static struct drm_sched_job * -drm_sched_get_finished_job(struct drm_gpu_scheduler *sched, bool *have_more) +drm_sched_get_finished_job(struct drm_gpu_scheduler *sched) { struct drm_sched_job *job, *next; @@ -934,7 +933,6 @@ drm_sched_get_finished_job(struct drm_gpu_scheduler *sched, bool *have_more) /* cancel this job's TO timer */ cancel_delayed_work(&sched->work_tdr); - *have_more = false; next = list_first_entry_or_null(&sched->pending_list, typeof(*next), list); if (next) { @@ -944,8 +942,6 @@ drm_sched_get_finished_job(struct drm_gpu_scheduler *sched, bool *have_more) next->s_fence->scheduled.timestamp = dma_fence_timestamp(&job->s_fence->finished); - *have_more = dma_fence_is_signaled(&next->s_fence->finished); - /* start TO timer for next job */ drm_sched_start_timeout(sched); } @@ -1004,14 +1000,9 @@ static void drm_sched_free_job_work(struct work_struct *w) struct drm_gpu_scheduler *sched = container_of(w, struct drm_gpu_scheduler, work_free_job); struct drm_sched_job *job; - bool have_more; - job = drm_sched_get_finished_job(sched, &have_more); - if (job) { + while ((job = drm_sched_get_finished_job(sched))) sched->ops->free_job(job); - if (have_more) - drm_sched_run_free_queue(sched); - } drm_sched_run_job_queue(sched); }