Lines Matching refs:s_job
265 static void drm_sched_job_done(struct drm_sched_job *s_job, int result) in drm_sched_job_done() argument
267 struct drm_sched_fence *s_fence = s_job->s_fence; in drm_sched_job_done()
288 struct drm_sched_job *s_job = container_of(cb, struct drm_sched_job, cb); in drm_sched_job_done_cb() local
290 drm_sched_job_done(s_job, f->error); in drm_sched_job_done_cb()
373 static void drm_sched_job_begin(struct drm_sched_job *s_job) in drm_sched_job_begin() argument
375 struct drm_gpu_scheduler *sched = s_job->sched; in drm_sched_job_begin()
378 list_add_tail(&s_job->list, &sched->pending_list); in drm_sched_job_begin()
440 struct drm_sched_job *s_job, *tmp; in drm_sched_stop() local
464 list_for_each_entry_safe_reverse(s_job, tmp, &sched->pending_list, in drm_sched_stop()
466 if (s_job->s_fence->parent && in drm_sched_stop()
467 dma_fence_remove_callback(s_job->s_fence->parent, in drm_sched_stop()
468 &s_job->cb)) { in drm_sched_stop()
469 dma_fence_put(s_job->s_fence->parent); in drm_sched_stop()
470 s_job->s_fence->parent = NULL; in drm_sched_stop()
478 list_del_init(&s_job->list); in drm_sched_stop()
487 dma_fence_wait(&s_job->s_fence->finished, false); in drm_sched_stop()
494 if (bad != s_job) in drm_sched_stop()
495 sched->ops->free_job(s_job); in drm_sched_stop()
521 struct drm_sched_job *s_job, *tmp; in drm_sched_start() local
529 list_for_each_entry_safe(s_job, tmp, &sched->pending_list, list) { in drm_sched_start()
530 struct dma_fence *fence = s_job->s_fence->parent; in drm_sched_start()
538 r = dma_fence_add_callback(fence, &s_job->cb, in drm_sched_start()
541 drm_sched_job_done(s_job, fence->error); in drm_sched_start()
546 drm_sched_job_done(s_job, -ECANCELED); in drm_sched_start()
578 struct drm_sched_job *s_job, *tmp; in drm_sched_resubmit_jobs() local
583 list_for_each_entry_safe(s_job, tmp, &sched->pending_list, list) { in drm_sched_resubmit_jobs()
584 struct drm_sched_fence *s_fence = s_job->s_fence; in drm_sched_resubmit_jobs()
586 if (!found_guilty && atomic_read(&s_job->karma) > sched->hang_limit) { in drm_sched_resubmit_jobs()
588 guilty_context = s_job->s_fence->scheduled.context; in drm_sched_resubmit_jobs()
591 if (found_guilty && s_job->s_fence->scheduled.context == guilty_context) in drm_sched_resubmit_jobs()
594 fence = sched->ops->run_job(s_job); in drm_sched_resubmit_jobs()
600 s_job->s_fence->parent = NULL; in drm_sched_resubmit_jobs()
603 s_job->s_fence->parent = dma_fence_get(fence); in drm_sched_resubmit_jobs()