Lines Matching refs:fence

217 	struct dma_fence *fence;  member
227 struct dma_fence *fence; member
268 struct dma_fence *fence; in drm_syncobj_fence_add_wait() local
270 if (wait->fence) in drm_syncobj_fence_add_wait()
278 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in drm_syncobj_fence_add_wait()
279 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
280 dma_fence_put(fence); in drm_syncobj_fence_add_wait()
282 } else if (!fence) { in drm_syncobj_fence_add_wait()
283 wait->fence = dma_fence_get_stub(); in drm_syncobj_fence_add_wait()
285 wait->fence = fence; in drm_syncobj_fence_add_wait()
305 dma_fence_put(entry->fence); in syncobj_eventfd_entry_free()
334 struct dma_fence *fence, in drm_syncobj_add_point() argument
341 dma_fence_get(fence); in drm_syncobj_add_point()
349 dma_fence_chain_init(chain, prev, fence, point); in drm_syncobj_add_point()
350 rcu_assign_pointer(syncobj->fence, &chain->base); in drm_syncobj_add_point()
359 dma_fence_chain_for_each(fence, prev); in drm_syncobj_add_point()
372 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
378 if (fence) in drm_syncobj_replace_fence()
379 dma_fence_get(fence); in drm_syncobj_replace_fence()
383 old_fence = rcu_dereference_protected(syncobj->fence, in drm_syncobj_replace_fence()
385 rcu_assign_pointer(syncobj->fence, fence); in drm_syncobj_replace_fence()
387 if (fence != old_fence) { in drm_syncobj_replace_fence()
408 struct dma_fence *fence = dma_fence_allocate_private_stub(ktime_get()); in drm_syncobj_assign_null_handle() local
410 if (!fence) in drm_syncobj_assign_null_handle()
413 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_assign_null_handle()
414 dma_fence_put(fence); in drm_syncobj_assign_null_handle()
437 struct dma_fence **fence) in drm_syncobj_find_fence() argument
459 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_find_fence()
461 if (*fence) { in drm_syncobj_find_fence()
462 ret = dma_fence_chain_find_seqno(fence, point); in drm_syncobj_find_fence()
469 if (!*fence) in drm_syncobj_find_fence()
470 *fence = dma_fence_get_stub(); in drm_syncobj_find_fence()
474 dma_fence_put(*fence); in drm_syncobj_find_fence()
489 if (wait.fence) { in drm_syncobj_find_fence()
507 *fence = wait.fence; in drm_syncobj_find_fence()
554 struct dma_fence *fence) in drm_syncobj_create() argument
576 if (fence) in drm_syncobj_create()
577 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_create()
749 struct dma_fence *fence = sync_file_get_fence(fd); in drm_syncobj_import_sync_file_fence() local
752 if (!fence) in drm_syncobj_import_sync_file_fence()
757 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
761 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_import_sync_file_fence()
762 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
771 struct dma_fence *fence; in drm_syncobj_export_sync_file() local
778 ret = drm_syncobj_find_fence(file_private, handle, 0, 0, &fence); in drm_syncobj_export_sync_file()
782 sync_file = sync_file_create(fence); in drm_syncobj_export_sync_file()
784 dma_fence_put(fence); in drm_syncobj_export_sync_file()
923 struct dma_fence *fence, *tmp; in drm_syncobj_transfer_to_timeline() local
937 fence = dma_fence_unwrap_merge(tmp); in drm_syncobj_transfer_to_timeline()
939 if (!fence) { in drm_syncobj_transfer_to_timeline()
950 drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); in drm_syncobj_transfer_to_timeline()
952 dma_fence_put(fence); in drm_syncobj_transfer_to_timeline()
964 struct dma_fence *fence; in drm_syncobj_transfer_to_binary() local
971 args->src_point, args->flags, &fence); in drm_syncobj_transfer_to_binary()
974 drm_syncobj_replace_fence(binary_syncobj, fence); in drm_syncobj_transfer_to_binary()
975 dma_fence_put(fence); in drm_syncobj_transfer_to_binary()
1002 static void syncobj_wait_fence_func(struct dma_fence *fence, in syncobj_wait_fence_func() argument
1014 struct dma_fence *fence; in syncobj_wait_syncobj_func() local
1017 fence = rcu_dereference_protected(syncobj->fence, in syncobj_wait_syncobj_func()
1019 dma_fence_get(fence); in syncobj_wait_syncobj_func()
1020 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
1021 dma_fence_put(fence); in syncobj_wait_syncobj_func()
1023 } else if (!fence) { in syncobj_wait_syncobj_func()
1024 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
1026 wait->fence = fence; in syncobj_wait_syncobj_func()
1042 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1077 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1081 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_array_wait_timeout()
1082 if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { in drm_syncobj_array_wait_timeout()
1083 dma_fence_put(fence); in drm_syncobj_array_wait_timeout()
1093 if (fence) in drm_syncobj_array_wait_timeout()
1094 entries[i].fence = fence; in drm_syncobj_array_wait_timeout()
1096 entries[i].fence = dma_fence_get_stub(); in drm_syncobj_array_wait_timeout()
1099 dma_fence_is_signaled(entries[i].fence)) { in drm_syncobj_array_wait_timeout()
1126 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1127 if (!fence) in drm_syncobj_array_wait_timeout()
1129 dma_fence_set_deadline(fence, *deadline); in drm_syncobj_array_wait_timeout()
1138 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1139 if (!fence) in drm_syncobj_array_wait_timeout()
1143 dma_fence_is_signaled(fence) || in drm_syncobj_array_wait_timeout()
1145 dma_fence_add_callback(fence, in drm_syncobj_array_wait_timeout()
1182 dma_fence_remove_callback(entries[i].fence, in drm_syncobj_array_wait_timeout()
1184 dma_fence_put(entries[i].fence); in drm_syncobj_array_wait_timeout()
1407 static void syncobj_eventfd_entry_fence_func(struct dma_fence *fence, in syncobj_eventfd_entry_fence_func() argument
1422 struct dma_fence *fence; in syncobj_eventfd_entry_func() local
1425 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in syncobj_eventfd_entry_func()
1426 if (!fence) in syncobj_eventfd_entry_func()
1429 ret = dma_fence_chain_find_seqno(&fence, entry->point); in syncobj_eventfd_entry_func()
1432 dma_fence_put(fence); in syncobj_eventfd_entry_func()
1434 } else if (!fence) { in syncobj_eventfd_entry_func()
1440 fence = dma_fence_get_stub(); in syncobj_eventfd_entry_func()
1444 entry->fence = fence; in syncobj_eventfd_entry_func()
1450 ret = dma_fence_add_callback(fence, &entry->fence_cb, in syncobj_eventfd_entry_func()
1636 struct dma_fence *fence = dma_fence_get_stub(); in drm_syncobj_timeline_signal_ioctl() local
1639 fence, points[i]); in drm_syncobj_timeline_signal_ioctl()
1640 dma_fence_put(fence); in drm_syncobj_timeline_signal_ioctl()
1679 struct dma_fence *fence; in drm_syncobj_query_ioctl() local
1682 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_query_ioctl()
1683 chain = to_dma_fence_chain(fence); in drm_syncobj_query_ioctl()
1686 dma_fence_get(fence); in drm_syncobj_query_ioctl()
1690 point = fence->seqno; in drm_syncobj_query_ioctl()
1692 dma_fence_chain_for_each(iter, fence) { in drm_syncobj_query_ioctl()
1693 if (iter->context != fence->context) { in drm_syncobj_query_ioctl()
1710 dma_fence_put(fence); in drm_syncobj_query_ioctl()