Lines Matching defs:fence

265  * Finish the job's fence and wake up the worker thread.
285 * @f: fence
286 * @cb: fence callbacks
488 * Wait for job's HW fence callback to finish using s_job
491 * Job is still alive so fence refcount at least 1
536 struct dma_fence *fence = s_job->s_fence->parent;
543 if (fence) {
544 r = dma_fence_add_callback(fence, &s_job->cb,
547 drm_sched_job_done(s_job, fence->error);
549 DRM_DEV_ERROR(sched->dev, "fence add callback failed (%d)\n",
587 struct dma_fence *fence;
600 fence = sched->ops->run_job(s_job);
602 if (IS_ERR_OR_NULL(fence)) {
603 if (IS_ERR(fence))
604 dma_fence_set_error(&s_fence->finished, PTR_ERR(fence));
609 s_job->s_fence->parent = dma_fence_get(fence);
612 dma_fence_put(fence);
696 * drm_sched_job_add_dependency - adds the fence as a job dependency
698 * @fence: the dma_fence to add to the list of dependencies.
700 * Note that @fence is consumed in both the success and error cases.
706 struct dma_fence *fence)
713 if (!fence)
716 /* Deduplicate if we already depend on a fence from the same context.
721 if (entry->context != fence->context)
724 if (dma_fence_is_later(fence, entry)) {
726 xa_store(&job->dependencies, index, fence, GFP_KERNEL);
728 dma_fence_put(fence);
733 ret = xa_alloc(&job->dependencies, &id, fence, xa_limit_32b, GFP_KERNEL);
735 dma_fence_put(fence);
742 * drm_sched_job_add_syncobj_dependency - adds a syncobj's fence as a job dependency
748 * This adds the fence matching the given syncobj to @job.
758 struct dma_fence *fence;
761 ret = drm_syncobj_find_fence(file, handle, point, 0, &fence);
765 return drm_sched_job_add_dependency(job, fence);
786 struct dma_fence *fence;
791 dma_resv_for_each_fence(&cursor, resv, usage, fence) {
792 /* Make sure to grab an additional ref on the added fence */
793 dma_fence_get(fence);
794 ret = drm_sched_job_add_dependency(job, fence);
796 dma_fence_put(fence);
843 struct dma_fence *fence;
856 xa_for_each(&job->dependencies, index, fence) {
857 dma_fence_put(fence);
1032 struct dma_fence *fence;
1060 fence = sched->ops->run_job(sched_job);
1062 drm_sched_fence_scheduled(s_fence, fence);
1064 if (!IS_ERR_OR_NULL(fence)) {
1065 /* Drop for original kref_init of the fence */
1066 dma_fence_put(fence);
1068 r = dma_fence_add_callback(fence, &sched_job->cb,
1071 drm_sched_job_done(sched_job, fence->error);
1073 DRM_DEV_ERROR(sched->dev, "fence add callback failed (%d)\n",
1076 drm_sched_job_done(sched_job, IS_ERR(fence) ?
1077 PTR_ERR(fence) : 0);