Lines Matching refs:fence

51 void drm_sched_fence_scheduled(struct drm_sched_fence *fence)
53 int ret = dma_fence_signal(&fence->scheduled);
56 DMA_FENCE_TRACE(&fence->scheduled,
59 DMA_FENCE_TRACE(&fence->scheduled,
63 void drm_sched_fence_finished(struct drm_sched_fence *fence)
65 int ret = dma_fence_signal(&fence->finished);
68 DMA_FENCE_TRACE(&fence->finished,
71 DMA_FENCE_TRACE(&fence->finished,
75 static const char *drm_sched_fence_get_driver_name(struct dma_fence *fence)
82 struct drm_sched_fence *fence = to_drm_sched_fence(f);
83 return (const char *)fence->sched->name;
87 * drm_sched_fence_free - free up the fence memory
91 * Free up the fence memory after the RCU grace period.
96 struct drm_sched_fence *fence = to_drm_sched_fence(f);
98 kmem_cache_free(sched_fence_slab, fence);
102 * drm_sched_fence_release_scheduled - callback that fence can be freed
104 * @f: fence
107 * It just RCU schedules freeing up the fence.
111 struct drm_sched_fence *fence = to_drm_sched_fence(f);
113 dma_fence_put(fence->parent);
114 call_rcu(&fence->finished.rcu, drm_sched_fence_free);
120 * @f: fence
122 * Drop the extra reference from the scheduled fence to the base fence.
126 struct drm_sched_fence *fence = to_drm_sched_fence(f);
128 dma_fence_put(&fence->scheduled);
158 struct drm_sched_fence *fence = NULL;
161 fence = kmem_cache_zalloc(sched_fence_slab, GFP_KERNEL);
162 if (fence == NULL)
165 fence->owner = owner;
166 fence->sched = entity->rq->sched;
167 spin_lock_init(&fence->lock);
170 dma_fence_init(&fence->scheduled, &drm_sched_fence_ops_scheduled,
171 &fence->lock, entity->fence_context, seq);
172 dma_fence_init(&fence->finished, &drm_sched_fence_ops_finished,
173 &fence->lock, entity->fence_context + 1, seq);
175 return fence;