Lines Matching refs:fence

207 	struct dma_fence *fence;  member
244 struct dma_fence *fence; in drm_syncobj_fence_add_wait() local
246 if (wait->fence) in drm_syncobj_fence_add_wait()
254 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in drm_syncobj_fence_add_wait()
255 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
256 dma_fence_put(fence); in drm_syncobj_fence_add_wait()
258 } else if (!fence) { in drm_syncobj_fence_add_wait()
259 wait->fence = dma_fence_get_stub(); in drm_syncobj_fence_add_wait()
261 wait->fence = fence; in drm_syncobj_fence_add_wait()
288 struct dma_fence *fence, in drm_syncobj_add_point() argument
294 dma_fence_get(fence); in drm_syncobj_add_point()
302 dma_fence_chain_init(chain, prev, fence, point); in drm_syncobj_add_point()
303 rcu_assign_pointer(syncobj->fence, &chain->base); in drm_syncobj_add_point()
310 dma_fence_chain_for_each(fence, prev); in drm_syncobj_add_point()
323 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
328 if (fence) in drm_syncobj_replace_fence()
329 dma_fence_get(fence); in drm_syncobj_replace_fence()
333 old_fence = rcu_dereference_protected(syncobj->fence, in drm_syncobj_replace_fence()
335 rcu_assign_pointer(syncobj->fence, fence); in drm_syncobj_replace_fence()
337 if (fence != old_fence) { in drm_syncobj_replace_fence()
356 struct dma_fence *fence = dma_fence_allocate_private_stub(); in drm_syncobj_assign_null_handle() local
358 if (IS_ERR(fence)) in drm_syncobj_assign_null_handle()
359 return PTR_ERR(fence); in drm_syncobj_assign_null_handle()
361 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_assign_null_handle()
362 dma_fence_put(fence); in drm_syncobj_assign_null_handle()
385 struct dma_fence **fence) in drm_syncobj_find_fence() argument
404 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_find_fence()
406 if (*fence) { in drm_syncobj_find_fence()
407 ret = dma_fence_chain_find_seqno(fence, point); in drm_syncobj_find_fence()
414 if (!*fence) in drm_syncobj_find_fence()
415 *fence = dma_fence_get_stub(); in drm_syncobj_find_fence()
419 dma_fence_put(*fence); in drm_syncobj_find_fence()
434 if (wait.fence) { in drm_syncobj_find_fence()
452 *fence = wait.fence; in drm_syncobj_find_fence()
493 struct dma_fence *fence) in drm_syncobj_create() argument
514 if (fence) in drm_syncobj_create()
515 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_create()
687 struct dma_fence *fence = sync_file_get_fence(fd); in drm_syncobj_import_sync_file_fence() local
690 if (!fence) in drm_syncobj_import_sync_file_fence()
695 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
699 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_import_sync_file_fence()
700 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
709 struct dma_fence *fence; in drm_syncobj_export_sync_file() local
716 ret = drm_syncobj_find_fence(file_private, handle, 0, 0, &fence); in drm_syncobj_export_sync_file()
720 sync_file = sync_file_create(fence); in drm_syncobj_export_sync_file()
722 dma_fence_put(fence); in drm_syncobj_export_sync_file()
861 struct dma_fence *fence, *tmp; in drm_syncobj_transfer_to_timeline() local
875 fence = dma_fence_unwrap_merge(tmp); in drm_syncobj_transfer_to_timeline()
877 if (!fence) { in drm_syncobj_transfer_to_timeline()
888 drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); in drm_syncobj_transfer_to_timeline()
890 dma_fence_put(fence); in drm_syncobj_transfer_to_timeline()
902 struct dma_fence *fence; in drm_syncobj_transfer_to_binary() local
909 args->src_point, args->flags, &fence); in drm_syncobj_transfer_to_binary()
912 drm_syncobj_replace_fence(binary_syncobj, fence); in drm_syncobj_transfer_to_binary()
913 dma_fence_put(fence); in drm_syncobj_transfer_to_binary()
940 static void syncobj_wait_fence_func(struct dma_fence *fence, in syncobj_wait_fence_func() argument
952 struct dma_fence *fence; in syncobj_wait_syncobj_func() local
955 fence = rcu_dereference_protected(syncobj->fence, in syncobj_wait_syncobj_func()
957 dma_fence_get(fence); in syncobj_wait_syncobj_func()
958 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
959 dma_fence_put(fence); in syncobj_wait_syncobj_func()
961 } else if (!fence) { in syncobj_wait_syncobj_func()
962 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
964 wait->fence = fence; in syncobj_wait_syncobj_func()
979 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1011 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1015 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_array_wait_timeout()
1016 if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { in drm_syncobj_array_wait_timeout()
1017 dma_fence_put(fence); in drm_syncobj_array_wait_timeout()
1026 if (fence) in drm_syncobj_array_wait_timeout()
1027 entries[i].fence = fence; in drm_syncobj_array_wait_timeout()
1029 entries[i].fence = dma_fence_get_stub(); in drm_syncobj_array_wait_timeout()
1032 dma_fence_is_signaled(entries[i].fence)) { in drm_syncobj_array_wait_timeout()
1061 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1062 if (!fence) in drm_syncobj_array_wait_timeout()
1066 dma_fence_is_signaled(fence) || in drm_syncobj_array_wait_timeout()
1068 dma_fence_add_callback(fence, in drm_syncobj_array_wait_timeout()
1105 dma_fence_remove_callback(entries[i].fence, in drm_syncobj_array_wait_timeout()
1107 dma_fence_put(entries[i].fence); in drm_syncobj_array_wait_timeout()
1434 struct dma_fence *fence = dma_fence_get_stub(); in drm_syncobj_timeline_signal_ioctl() local
1437 fence, points[i]); in drm_syncobj_timeline_signal_ioctl()
1438 dma_fence_put(fence); in drm_syncobj_timeline_signal_ioctl()
1477 struct dma_fence *fence; in drm_syncobj_query_ioctl() local
1480 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_query_ioctl()
1481 chain = to_dma_fence_chain(fence); in drm_syncobj_query_ioctl()
1484 dma_fence_get(fence); in drm_syncobj_query_ioctl()
1488 point = fence->seqno; in drm_syncobj_query_ioctl()
1490 dma_fence_chain_for_each(iter, fence) { in drm_syncobj_query_ioctl()
1491 if (iter->context != fence->context) { in drm_syncobj_query_ioctl()
1508 dma_fence_put(fence); in drm_syncobj_query_ioctl()