Lines Matching full:fence

27 #include <linux/dma-fence-unwrap.h>
153 struct dma_fence *fence;
165 fence = &userq_fence->base;
167 if (rptr < fence->seqno)
170 dma_fence_signal(fence);
176 dma_fence_put(fence);
188 struct amdgpu_userq_fence *fence, *tmp;
194 list_for_each_entry_safe(fence, tmp, &fence_drv->fences, link) {
195 f = &fence->base;
202 list_del(&fence->link);
239 struct dma_fence *fence;
248 fence = &userq_fence->base;
251 dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
255 dma_fence_get(fence);
288 if (!dma_fence_is_signaled(fence))
291 dma_fence_put(fence);
295 *f = fence;
307 struct amdgpu_userq_fence *fence = to_amdgpu_userq_fence(f);
309 return fence->fence_drv->timeline_name;
314 struct amdgpu_userq_fence *fence = to_amdgpu_userq_fence(f);
315 struct amdgpu_userq_fence_driver *fence_drv = fence->fence_drv;
319 wptr = fence->base.seqno;
329 struct dma_fence *fence = container_of(rcu, struct dma_fence, rcu);
330 struct amdgpu_userq_fence *userq_fence = to_amdgpu_userq_fence(fence);
333 /* Release the fence driver reference */
416 static void amdgpu_userq_fence_cleanup(struct dma_fence *fence)
418 dma_fence_put(fence);
422 amdgpu_userq_fence_driver_set_error(struct amdgpu_userq_fence *fence,
425 struct amdgpu_userq_fence_driver *fence_drv = fence->fence_drv;
431 f = rcu_dereference_protected(&fence->base,
444 struct amdgpu_userq_fence *fence = to_amdgpu_userq_fence(f);
445 struct amdgpu_userq_fence_driver *fence_drv = fence->fence_drv;
446 u64 wptr = fence->base.seqno;
448 amdgpu_userq_fence_driver_set_error(fence, -ECANCELED);
470 struct dma_fence *fence;
556 /* We are here means UQ is active, make sure the eviction fence is valid */
559 /* Create a new fence */
560 r = amdgpu_userq_fence_create(queue, userq_fence, wptr, &fence);
568 queue->last_fence = dma_fence_get(fence);
579 amdgpu_userq_fence_cleanup(fence);
586 amdgpu_userq_fence_cleanup(fence);
595 dma_resv_add_fence(gobj_read[i]->resv, fence,
603 dma_resv_add_fence(gobj_write[i]->resv, fence,
607 /* Add the created fence to syncobj/BO's */
609 drm_syncobj_replace_fence(syncobj[i], fence);
611 /* drop the reference acquired in fence creation function */
612 dma_fence_put(fence);
744 struct dma_fence *fence;
751 &fence);
755 dma_fence_unwrap_for_each(f, &iter, fence)
758 dma_fence_put(fence);
762 /* Count syncobj's fence */
764 struct dma_fence *fence;
769 &fence);
774 dma_fence_put(fence);
777 /* Count GEM objects fence */
780 struct dma_fence *fence;
783 DMA_RESV_USAGE_READ, fence)
789 struct dma_fence *fence;
792 DMA_RESV_USAGE_WRITE, fence)
804 /* Array of fence info */
818 /* Retrieve GEM read objects fence */
821 struct dma_fence *fence;
824 DMA_RESV_USAGE_READ, fence) {
830 fences[num_fences++] = fence;
831 dma_fence_get(fence);
835 /* Retrieve GEM write objects fence */
838 struct dma_fence *fence;
841 DMA_RESV_USAGE_WRITE, fence) {
847 fences[num_fences++] = fence;
848 dma_fence_get(fence);
854 struct dma_fence *fence;
861 &fence);
865 dma_fence_unwrap_for_each(f, &iter, fence) {
875 dma_fence_put(fence);
879 /* Retrieve syncobj's fence */
881 struct dma_fence *fence;
886 &fence);
895 fences[num_fences++] = fence;
934 * to the fence drivers at some point before queue destruction.
950 /* Increment the actual userq fence count */
955 /* Copy userq fence info to user space */