Lines Matching defs:s_job

124 	struct drm_sched_job *s_job;
126 s_job = to_drm_sched_job(spsc_queue_peek(&entity->job_queue));
127 if (!s_job)
131 s_job->credits = sched->ops->update_job_credits(s_job);
133 drm_WARN(sched, !s_job->credits,
140 if (drm_WARN(sched, s_job->credits > sched->credit_limit,
142 s_job->credits = sched->credit_limit;
144 return drm_sched_available_credits(sched) >= s_job->credits;
400 * @s_job: pointer to the job which is done
404 static void drm_sched_job_done(struct drm_sched_job *s_job, int result)
406 struct drm_sched_fence *s_fence = s_job->s_fence;
409 atomic_sub(s_job->credits, &sched->credit_count);
427 struct drm_sched_job *s_job = container_of(cb, struct drm_sched_job, cb);
429 drm_sched_job_done(s_job, f->error);
537 static void drm_sched_job_begin(struct drm_sched_job *s_job)
539 struct drm_gpu_scheduler *sched = s_job->sched;
542 list_add_tail(&s_job->list, &sched->pending_list);
601 struct drm_sched_job *s_job, *tmp;
625 list_for_each_entry_safe_reverse(s_job, tmp, &sched->pending_list,
627 if (s_job->s_fence->parent &&
628 dma_fence_remove_callback(s_job->s_fence->parent,
629 &s_job->cb)) {
630 dma_fence_put(s_job->s_fence->parent);
631 s_job->s_fence->parent = NULL;
632 atomic_sub(s_job->credits, &sched->credit_count);
639 list_del_init(&s_job->list);
643 * Wait for job's HW fence callback to finish using s_job
648 dma_fence_wait(&s_job->s_fence->finished, false);
655 if (bad != s_job)
656 sched->ops->free_job(s_job);
682 struct drm_sched_job *s_job, *tmp;
690 list_for_each_entry_safe(s_job, tmp, &sched->pending_list, list) {
691 struct dma_fence *fence = s_job->s_fence->parent;
693 atomic_add(s_job->credits, &sched->credit_count);
699 r = dma_fence_add_callback(fence, &s_job->cb,
702 drm_sched_job_done(s_job, fence->error);
707 drm_sched_job_done(s_job, -ECANCELED);
736 struct drm_sched_job *s_job, *tmp;
741 list_for_each_entry_safe(s_job, tmp, &sched->pending_list, list) {
742 struct drm_sched_fence *s_fence = s_job->s_fence;
744 if (!found_guilty && atomic_read(&s_job->karma) > sched->hang_limit) {
746 guilty_context = s_job->s_fence->scheduled.context;
749 if (found_guilty && s_job->s_fence->scheduled.context == guilty_context)
752 fence = sched->ops->run_job(s_job);
758 s_job->s_fence->parent = NULL;
761 s_job->s_fence->parent = dma_fence_get(fence);