• Home
  • Raw
  • Download

Lines Matching full:fence

51 void drm_sched_fence_scheduled(struct drm_sched_fence *fence)  in drm_sched_fence_scheduled()  argument
53 int ret = dma_fence_signal(&fence->scheduled); in drm_sched_fence_scheduled()
56 DMA_FENCE_TRACE(&fence->scheduled, in drm_sched_fence_scheduled()
59 DMA_FENCE_TRACE(&fence->scheduled, in drm_sched_fence_scheduled()
63 void drm_sched_fence_finished(struct drm_sched_fence *fence) in drm_sched_fence_finished() argument
65 int ret = dma_fence_signal(&fence->finished); in drm_sched_fence_finished()
68 DMA_FENCE_TRACE(&fence->finished, in drm_sched_fence_finished()
71 DMA_FENCE_TRACE(&fence->finished, in drm_sched_fence_finished()
75 static const char *drm_sched_fence_get_driver_name(struct dma_fence *fence) in drm_sched_fence_get_driver_name() argument
82 struct drm_sched_fence *fence = to_drm_sched_fence(f); in drm_sched_fence_get_timeline_name() local
83 return (const char *)fence->sched->name; in drm_sched_fence_get_timeline_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); in drm_sched_fence_free() local
98 kmem_cache_free(sched_fence_slab, fence); in drm_sched_fence_free()
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); in drm_sched_fence_release_scheduled() local
113 dma_fence_put(fence->parent); in drm_sched_fence_release_scheduled()
114 call_rcu(&fence->finished.rcu, drm_sched_fence_free); in drm_sched_fence_release_scheduled()
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); in drm_sched_fence_release_finished() local
128 dma_fence_put(&fence->scheduled); in drm_sched_fence_release_finished()
158 struct drm_sched_fence *fence = NULL; in drm_sched_fence_create() local
161 fence = kmem_cache_zalloc(sched_fence_slab, GFP_KERNEL); in drm_sched_fence_create()
162 if (fence == NULL) in drm_sched_fence_create()
165 fence->owner = owner; in drm_sched_fence_create()
166 fence->sched = entity->rq->sched; in drm_sched_fence_create()
167 spin_lock_init(&fence->lock); in drm_sched_fence_create()
170 dma_fence_init(&fence->scheduled, &drm_sched_fence_ops_scheduled, in drm_sched_fence_create()
171 &fence->lock, entity->fence_context, seq); in drm_sched_fence_create()
172 dma_fence_init(&fence->finished, &drm_sched_fence_ops_finished, in drm_sched_fence_create()
173 &fence->lock, entity->fence_context + 1, seq); in drm_sched_fence_create()
175 return fence; in drm_sched_fence_create()