Lines Matching refs:fence
206 struct dma_fence *fence; member
243 struct dma_fence *fence; in drm_syncobj_fence_add_wait() local
245 if (wait->fence) in drm_syncobj_fence_add_wait()
253 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in drm_syncobj_fence_add_wait()
254 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
255 dma_fence_put(fence); in drm_syncobj_fence_add_wait()
257 } else if (!fence) { in drm_syncobj_fence_add_wait()
258 wait->fence = dma_fence_get_stub(); in drm_syncobj_fence_add_wait()
260 wait->fence = fence; in drm_syncobj_fence_add_wait()
287 struct dma_fence *fence, in drm_syncobj_add_point() argument
293 dma_fence_get(fence); in drm_syncobj_add_point()
301 dma_fence_chain_init(chain, prev, fence, point); in drm_syncobj_add_point()
302 rcu_assign_pointer(syncobj->fence, &chain->base); in drm_syncobj_add_point()
309 dma_fence_chain_for_each(fence, prev); in drm_syncobj_add_point()
322 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
327 if (fence) in drm_syncobj_replace_fence()
328 dma_fence_get(fence); in drm_syncobj_replace_fence()
332 old_fence = rcu_dereference_protected(syncobj->fence, in drm_syncobj_replace_fence()
334 rcu_assign_pointer(syncobj->fence, fence); in drm_syncobj_replace_fence()
336 if (fence != old_fence) { in drm_syncobj_replace_fence()
355 struct dma_fence *fence = dma_fence_allocate_private_stub(); in drm_syncobj_assign_null_handle() local
357 if (IS_ERR(fence)) in drm_syncobj_assign_null_handle()
358 return PTR_ERR(fence); in drm_syncobj_assign_null_handle()
360 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_assign_null_handle()
361 dma_fence_put(fence); in drm_syncobj_assign_null_handle()
384 struct dma_fence **fence) in drm_syncobj_find_fence() argument
403 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_find_fence()
405 if (*fence) { in drm_syncobj_find_fence()
406 ret = dma_fence_chain_find_seqno(fence, point); in drm_syncobj_find_fence()
413 if (!*fence) in drm_syncobj_find_fence()
414 *fence = dma_fence_get_stub(); in drm_syncobj_find_fence()
418 dma_fence_put(*fence); in drm_syncobj_find_fence()
433 if (wait.fence) { in drm_syncobj_find_fence()
451 *fence = wait.fence; in drm_syncobj_find_fence()
492 struct dma_fence *fence) in drm_syncobj_create() argument
513 if (fence) in drm_syncobj_create()
514 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_create()
686 struct dma_fence *fence = sync_file_get_fence(fd); in drm_syncobj_import_sync_file_fence() local
689 if (!fence) in drm_syncobj_import_sync_file_fence()
694 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
698 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_import_sync_file_fence()
699 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
708 struct dma_fence *fence; in drm_syncobj_export_sync_file() local
715 ret = drm_syncobj_find_fence(file_private, handle, 0, 0, &fence); in drm_syncobj_export_sync_file()
719 sync_file = sync_file_create(fence); in drm_syncobj_export_sync_file()
721 dma_fence_put(fence); in drm_syncobj_export_sync_file()
860 struct dma_fence *fence; in drm_syncobj_transfer_to_timeline() local
870 &fence); in drm_syncobj_transfer_to_timeline()
878 drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); in drm_syncobj_transfer_to_timeline()
880 dma_fence_put(fence); in drm_syncobj_transfer_to_timeline()
892 struct dma_fence *fence; in drm_syncobj_transfer_to_binary() local
899 args->src_point, args->flags, &fence); in drm_syncobj_transfer_to_binary()
902 drm_syncobj_replace_fence(binary_syncobj, fence); in drm_syncobj_transfer_to_binary()
903 dma_fence_put(fence); in drm_syncobj_transfer_to_binary()
930 static void syncobj_wait_fence_func(struct dma_fence *fence, in syncobj_wait_fence_func() argument
942 struct dma_fence *fence; in syncobj_wait_syncobj_func() local
945 fence = rcu_dereference_protected(syncobj->fence, in syncobj_wait_syncobj_func()
947 dma_fence_get(fence); in syncobj_wait_syncobj_func()
948 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
949 dma_fence_put(fence); in syncobj_wait_syncobj_func()
951 } else if (!fence) { in syncobj_wait_syncobj_func()
952 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
954 wait->fence = fence; in syncobj_wait_syncobj_func()
969 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1001 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1005 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_array_wait_timeout()
1006 if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { in drm_syncobj_array_wait_timeout()
1007 dma_fence_put(fence); in drm_syncobj_array_wait_timeout()
1016 if (fence) in drm_syncobj_array_wait_timeout()
1017 entries[i].fence = fence; in drm_syncobj_array_wait_timeout()
1019 entries[i].fence = dma_fence_get_stub(); in drm_syncobj_array_wait_timeout()
1022 dma_fence_is_signaled(entries[i].fence)) { in drm_syncobj_array_wait_timeout()
1051 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1052 if (!fence) in drm_syncobj_array_wait_timeout()
1056 dma_fence_is_signaled(fence) || in drm_syncobj_array_wait_timeout()
1058 dma_fence_add_callback(fence, in drm_syncobj_array_wait_timeout()
1095 dma_fence_remove_callback(entries[i].fence, in drm_syncobj_array_wait_timeout()
1097 dma_fence_put(entries[i].fence); in drm_syncobj_array_wait_timeout()
1424 struct dma_fence *fence = dma_fence_get_stub(); in drm_syncobj_timeline_signal_ioctl() local
1427 fence, points[i]); in drm_syncobj_timeline_signal_ioctl()
1428 dma_fence_put(fence); in drm_syncobj_timeline_signal_ioctl()
1467 struct dma_fence *fence; in drm_syncobj_query_ioctl() local
1470 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_query_ioctl()
1471 chain = to_dma_fence_chain(fence); in drm_syncobj_query_ioctl()
1474 dma_fence_get(fence); in drm_syncobj_query_ioctl()
1478 point = fence->seqno; in drm_syncobj_query_ioctl()
1480 dma_fence_chain_for_each(iter, fence) { in drm_syncobj_query_ioctl()
1481 if (iter->context != fence->context) { in drm_syncobj_query_ioctl()
1498 dma_fence_put(fence); in drm_syncobj_query_ioctl()