Lines Matching refs:fence
36 static const char *vgem_fence_get_driver_name(struct dma_fence *fence) in vgem_fence_get_driver_name() argument
41 static const char *vgem_fence_get_timeline_name(struct dma_fence *fence) in vgem_fence_get_timeline_name() argument
46 static bool vgem_fence_signaled(struct dma_fence *fence) in vgem_fence_signaled() argument
51 static bool vgem_fence_enable_signaling(struct dma_fence *fence) in vgem_fence_enable_signaling() argument
58 struct vgem_fence *fence = container_of(base, typeof(*fence), base); in vgem_fence_release() local
60 del_timer_sync(&fence->timer); in vgem_fence_release()
61 dma_fence_free(&fence->base); in vgem_fence_release()
64 static void vgem_fence_value_str(struct dma_fence *fence, char *str, int size) in vgem_fence_value_str() argument
66 snprintf(str, size, "%u", fence->seqno); in vgem_fence_value_str()
69 static void vgem_fence_timeline_value_str(struct dma_fence *fence, char *str, in vgem_fence_timeline_value_str() argument
73 dma_fence_is_signaled(fence) ? fence->seqno : 0); in vgem_fence_timeline_value_str()
90 struct vgem_fence *fence = (struct vgem_fence *)data; in vgem_fence_timeout() local
92 dma_fence_signal(&fence->base); in vgem_fence_timeout()
98 struct vgem_fence *fence; in vgem_fence_create() local
100 fence = kzalloc(sizeof(*fence), GFP_KERNEL); in vgem_fence_create()
101 if (!fence) in vgem_fence_create()
104 spin_lock_init(&fence->lock); in vgem_fence_create()
105 dma_fence_init(&fence->base, &vgem_fence_ops, &fence->lock, in vgem_fence_create()
108 setup_timer(&fence->timer, vgem_fence_timeout, (unsigned long)fence); in vgem_fence_create()
111 mod_timer(&fence->timer, jiffies + VGEM_FENCE_TIMEOUT); in vgem_fence_create()
113 return &fence->base; in vgem_fence_create()
160 struct dma_fence *fence; in vgem_fence_attach_ioctl() local
177 fence = vgem_fence_create(vfile, arg->flags); in vgem_fence_attach_ioctl()
178 if (!fence) { in vgem_fence_attach_ioctl()
195 reservation_object_add_excl_fence(resv, fence); in vgem_fence_attach_ioctl()
197 reservation_object_add_shared_fence(resv, fence); in vgem_fence_attach_ioctl()
203 ret = idr_alloc(&vfile->fence_idr, fence, 1, 0, GFP_KERNEL); in vgem_fence_attach_ioctl()
212 dma_fence_signal(fence); in vgem_fence_attach_ioctl()
213 dma_fence_put(fence); in vgem_fence_attach_ioctl()
242 struct dma_fence *fence; in vgem_fence_signal_ioctl() local
249 fence = idr_replace(&vfile->fence_idr, NULL, arg->fence); in vgem_fence_signal_ioctl()
251 if (!fence) in vgem_fence_signal_ioctl()
253 if (IS_ERR(fence)) in vgem_fence_signal_ioctl()
254 return PTR_ERR(fence); in vgem_fence_signal_ioctl()
256 if (dma_fence_is_signaled(fence)) in vgem_fence_signal_ioctl()
259 dma_fence_signal(fence); in vgem_fence_signal_ioctl()
260 dma_fence_put(fence); in vgem_fence_signal_ioctl()