Lines Matching refs:fence

212 	struct dma_fence *fence;  member
222 struct dma_fence *fence; member
263 struct dma_fence *fence; in drm_syncobj_fence_add_wait() local
265 if (wait->fence) in drm_syncobj_fence_add_wait()
273 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in drm_syncobj_fence_add_wait()
274 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
275 dma_fence_put(fence); in drm_syncobj_fence_add_wait()
277 } else if (!fence) { in drm_syncobj_fence_add_wait()
278 wait->fence = dma_fence_get_stub(); in drm_syncobj_fence_add_wait()
280 wait->fence = fence; in drm_syncobj_fence_add_wait()
300 dma_fence_put(entry->fence); in syncobj_eventfd_entry_free()
329 struct dma_fence *fence, in drm_syncobj_add_point() argument
336 dma_fence_get(fence); in drm_syncobj_add_point()
344 dma_fence_chain_init(chain, prev, fence, point); in drm_syncobj_add_point()
345 rcu_assign_pointer(syncobj->fence, &chain->base); in drm_syncobj_add_point()
354 dma_fence_chain_for_each(fence, prev); in drm_syncobj_add_point()
367 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
373 if (fence) in drm_syncobj_replace_fence()
374 dma_fence_get(fence); in drm_syncobj_replace_fence()
378 old_fence = rcu_dereference_protected(syncobj->fence, in drm_syncobj_replace_fence()
380 rcu_assign_pointer(syncobj->fence, fence); in drm_syncobj_replace_fence()
382 if (fence != old_fence) { in drm_syncobj_replace_fence()
403 struct dma_fence *fence = dma_fence_allocate_private_stub(ktime_get()); in drm_syncobj_assign_null_handle() local
405 if (!fence) in drm_syncobj_assign_null_handle()
408 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_assign_null_handle()
409 dma_fence_put(fence); in drm_syncobj_assign_null_handle()
432 struct dma_fence **fence) in drm_syncobj_find_fence() argument
451 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_find_fence()
453 if (*fence) { in drm_syncobj_find_fence()
454 ret = dma_fence_chain_find_seqno(fence, point); in drm_syncobj_find_fence()
461 if (!*fence) in drm_syncobj_find_fence()
462 *fence = dma_fence_get_stub(); in drm_syncobj_find_fence()
466 dma_fence_put(*fence); in drm_syncobj_find_fence()
481 if (wait.fence) { in drm_syncobj_find_fence()
499 *fence = wait.fence; in drm_syncobj_find_fence()
546 struct dma_fence *fence) in drm_syncobj_create() argument
568 if (fence) in drm_syncobj_create()
569 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_create()
741 struct dma_fence *fence = sync_file_get_fence(fd); in drm_syncobj_import_sync_file_fence() local
744 if (!fence) in drm_syncobj_import_sync_file_fence()
749 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
753 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_import_sync_file_fence()
754 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
763 struct dma_fence *fence; in drm_syncobj_export_sync_file() local
770 ret = drm_syncobj_find_fence(file_private, handle, 0, 0, &fence); in drm_syncobj_export_sync_file()
774 sync_file = sync_file_create(fence); in drm_syncobj_export_sync_file()
776 dma_fence_put(fence); in drm_syncobj_export_sync_file()
915 struct dma_fence *fence, *tmp; in drm_syncobj_transfer_to_timeline() local
929 fence = dma_fence_unwrap_merge(tmp); in drm_syncobj_transfer_to_timeline()
931 if (!fence) { in drm_syncobj_transfer_to_timeline()
942 drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); in drm_syncobj_transfer_to_timeline()
944 dma_fence_put(fence); in drm_syncobj_transfer_to_timeline()
956 struct dma_fence *fence; in drm_syncobj_transfer_to_binary() local
963 args->src_point, args->flags, &fence); in drm_syncobj_transfer_to_binary()
966 drm_syncobj_replace_fence(binary_syncobj, fence); in drm_syncobj_transfer_to_binary()
967 dma_fence_put(fence); in drm_syncobj_transfer_to_binary()
994 static void syncobj_wait_fence_func(struct dma_fence *fence, in syncobj_wait_fence_func() argument
1006 struct dma_fence *fence; in syncobj_wait_syncobj_func() local
1009 fence = rcu_dereference_protected(syncobj->fence, in syncobj_wait_syncobj_func()
1011 dma_fence_get(fence); in syncobj_wait_syncobj_func()
1012 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
1013 dma_fence_put(fence); in syncobj_wait_syncobj_func()
1015 } else if (!fence) { in syncobj_wait_syncobj_func()
1016 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
1018 wait->fence = fence; in syncobj_wait_syncobj_func()
1033 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1065 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1069 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_array_wait_timeout()
1070 if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { in drm_syncobj_array_wait_timeout()
1071 dma_fence_put(fence); in drm_syncobj_array_wait_timeout()
1080 if (fence) in drm_syncobj_array_wait_timeout()
1081 entries[i].fence = fence; in drm_syncobj_array_wait_timeout()
1083 entries[i].fence = dma_fence_get_stub(); in drm_syncobj_array_wait_timeout()
1086 dma_fence_is_signaled(entries[i].fence)) { in drm_syncobj_array_wait_timeout()
1115 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1116 if (!fence) in drm_syncobj_array_wait_timeout()
1120 dma_fence_is_signaled(fence) || in drm_syncobj_array_wait_timeout()
1122 dma_fence_add_callback(fence, in drm_syncobj_array_wait_timeout()
1159 dma_fence_remove_callback(entries[i].fence, in drm_syncobj_array_wait_timeout()
1161 dma_fence_put(entries[i].fence); in drm_syncobj_array_wait_timeout()
1361 static void syncobj_eventfd_entry_fence_func(struct dma_fence *fence, in syncobj_eventfd_entry_fence_func() argument
1376 struct dma_fence *fence; in syncobj_eventfd_entry_func() local
1379 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in syncobj_eventfd_entry_func()
1380 ret = dma_fence_chain_find_seqno(&fence, entry->point); in syncobj_eventfd_entry_func()
1381 if (ret != 0 || !fence) { in syncobj_eventfd_entry_func()
1382 dma_fence_put(fence); in syncobj_eventfd_entry_func()
1387 entry->fence = fence; in syncobj_eventfd_entry_func()
1393 ret = dma_fence_add_callback(fence, &entry->fence_cb, in syncobj_eventfd_entry_func()
1570 struct dma_fence *fence = dma_fence_get_stub(); in drm_syncobj_timeline_signal_ioctl() local
1573 fence, points[i]); in drm_syncobj_timeline_signal_ioctl()
1574 dma_fence_put(fence); in drm_syncobj_timeline_signal_ioctl()
1613 struct dma_fence *fence; in drm_syncobj_query_ioctl() local
1616 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_query_ioctl()
1617 chain = to_dma_fence_chain(fence); in drm_syncobj_query_ioctl()
1620 dma_fence_get(fence); in drm_syncobj_query_ioctl()
1624 point = fence->seqno; in drm_syncobj_query_ioctl()
1626 dma_fence_chain_for_each(iter, fence) { in drm_syncobj_query_ioctl()
1627 if (iter->context != fence->context) { in drm_syncobj_query_ioctl()
1644 dma_fence_put(fence); in drm_syncobj_query_ioctl()