Lines Matching refs:fence
61 void drm_sched_fence_scheduled(struct drm_sched_fence *fence)
63 int ret = dma_fence_signal(&fence->scheduled);
66 DMA_FENCE_TRACE(&fence->scheduled,
69 DMA_FENCE_TRACE(&fence->scheduled,
73 void drm_sched_fence_finished(struct drm_sched_fence *fence)
75 int ret = dma_fence_signal(&fence->finished);
78 DMA_FENCE_TRACE(&fence->finished,
81 DMA_FENCE_TRACE(&fence->finished,
85 static const char *drm_sched_fence_get_driver_name(struct dma_fence *fence)
92 struct drm_sched_fence *fence = to_drm_sched_fence(f);
93 return (const char *)fence->sched->name;
97 * drm_sched_fence_free - free up the fence memory
101 * Free up the fence memory after the RCU grace period.
106 struct drm_sched_fence *fence = to_drm_sched_fence(f);
108 spin_lock_destroy(&fence->lock);
110 kmem_cache_free(sched_fence_slab, fence);
114 * drm_sched_fence_release_scheduled - callback that fence can be freed
116 * @fence: fence
119 * It just RCU schedules freeing up the fence.
123 struct drm_sched_fence *fence = to_drm_sched_fence(f);
125 dma_fence_put(fence->parent);
126 call_rcu(&fence->finished.rcu, drm_sched_fence_free);
132 * @f: fence
134 * Drop the extra reference from the scheduled fence to the base fence.
138 struct drm_sched_fence *fence = to_drm_sched_fence(f);
140 dma_fence_put(&fence->scheduled);
170 struct drm_sched_fence *fence = NULL;
173 fence = kmem_cache_zalloc(sched_fence_slab, GFP_KERNEL);
174 if (fence == NULL)
177 fence->owner = owner;
178 fence->sched = entity->rq->sched;
179 spin_lock_init(&fence->lock);
182 dma_fence_init(&fence->scheduled, &drm_sched_fence_ops_scheduled,
183 &fence->lock, entity->fence_context, seq);
184 dma_fence_init(&fence->finished, &drm_sched_fence_ops_finished,
185 &fence->lock, entity->fence_context + 1, seq);
187 return fence;