Lines Matching refs:fence
218 struct dma_fence *fence; member
228 struct dma_fence *fence; member
269 struct dma_fence *fence; in drm_syncobj_fence_add_wait() local
271 if (wait->fence) in drm_syncobj_fence_add_wait()
279 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in drm_syncobj_fence_add_wait()
280 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
281 dma_fence_put(fence); in drm_syncobj_fence_add_wait()
283 } else if (!fence) { in drm_syncobj_fence_add_wait()
284 wait->fence = dma_fence_get_stub(); in drm_syncobj_fence_add_wait()
286 wait->fence = fence; in drm_syncobj_fence_add_wait()
306 dma_fence_put(entry->fence); in syncobj_eventfd_entry_free()
335 struct dma_fence *fence, in drm_syncobj_add_point() argument
342 dma_fence_get(fence); in drm_syncobj_add_point()
350 dma_fence_chain_init(chain, prev, fence, point); in drm_syncobj_add_point()
351 rcu_assign_pointer(syncobj->fence, &chain->base); in drm_syncobj_add_point()
360 dma_fence_chain_for_each(fence, prev); in drm_syncobj_add_point()
373 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
379 if (fence) in drm_syncobj_replace_fence()
380 dma_fence_get(fence); in drm_syncobj_replace_fence()
384 old_fence = rcu_dereference_protected(syncobj->fence, in drm_syncobj_replace_fence()
386 rcu_assign_pointer(syncobj->fence, fence); in drm_syncobj_replace_fence()
388 if (fence != old_fence) { in drm_syncobj_replace_fence()
409 struct dma_fence *fence = dma_fence_allocate_private_stub(ktime_get()); in drm_syncobj_assign_null_handle() local
411 if (!fence) in drm_syncobj_assign_null_handle()
414 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_assign_null_handle()
415 dma_fence_put(fence); in drm_syncobj_assign_null_handle()
438 struct dma_fence **fence) in drm_syncobj_find_fence() argument
460 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_find_fence()
462 if (*fence) { in drm_syncobj_find_fence()
463 ret = dma_fence_chain_find_seqno(fence, point); in drm_syncobj_find_fence()
470 if (!*fence) in drm_syncobj_find_fence()
471 *fence = dma_fence_get_stub(); in drm_syncobj_find_fence()
475 dma_fence_put(*fence); in drm_syncobj_find_fence()
490 if (wait.fence) { in drm_syncobj_find_fence()
508 *fence = wait.fence; in drm_syncobj_find_fence()
555 struct dma_fence *fence) in drm_syncobj_create() argument
577 if (fence) in drm_syncobj_create()
578 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_create()
747 struct dma_fence *fence = sync_file_get_fence(fd); in drm_syncobj_import_sync_file_fence() local
750 if (!fence) in drm_syncobj_import_sync_file_fence()
755 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
765 drm_syncobj_add_point(syncobj, chain, fence, point); in drm_syncobj_import_sync_file_fence()
767 drm_syncobj_replace_fence(syncobj, fence); in drm_syncobj_import_sync_file_fence()
770 dma_fence_put(fence); in drm_syncobj_import_sync_file_fence()
779 struct dma_fence *fence; in drm_syncobj_export_sync_file() local
786 ret = drm_syncobj_find_fence(file_private, handle, point, 0, &fence); in drm_syncobj_export_sync_file()
790 sync_file = sync_file_create(fence); in drm_syncobj_export_sync_file()
792 dma_fence_put(fence); in drm_syncobj_export_sync_file()
948 struct dma_fence *fence, *tmp; in drm_syncobj_transfer_to_timeline() local
962 fence = dma_fence_unwrap_merge(tmp); in drm_syncobj_transfer_to_timeline()
964 if (!fence) { in drm_syncobj_transfer_to_timeline()
975 drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); in drm_syncobj_transfer_to_timeline()
977 dma_fence_put(fence); in drm_syncobj_transfer_to_timeline()
989 struct dma_fence *fence; in drm_syncobj_transfer_to_binary() local
996 args->src_point, args->flags, &fence); in drm_syncobj_transfer_to_binary()
999 drm_syncobj_replace_fence(binary_syncobj, fence); in drm_syncobj_transfer_to_binary()
1000 dma_fence_put(fence); in drm_syncobj_transfer_to_binary()
1027 static void syncobj_wait_fence_func(struct dma_fence *fence, in syncobj_wait_fence_func() argument
1039 struct dma_fence *fence; in syncobj_wait_syncobj_func() local
1042 fence = rcu_dereference_protected(syncobj->fence, in syncobj_wait_syncobj_func()
1044 dma_fence_get(fence); in syncobj_wait_syncobj_func()
1045 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
1046 dma_fence_put(fence); in syncobj_wait_syncobj_func()
1048 } else if (!fence) { in syncobj_wait_syncobj_func()
1049 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
1051 wait->fence = fence; in syncobj_wait_syncobj_func()
1067 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1102 struct dma_fence *fence; in drm_syncobj_array_wait_timeout() local
1106 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_array_wait_timeout()
1107 if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { in drm_syncobj_array_wait_timeout()
1108 dma_fence_put(fence); in drm_syncobj_array_wait_timeout()
1118 if (fence) in drm_syncobj_array_wait_timeout()
1119 entries[i].fence = fence; in drm_syncobj_array_wait_timeout()
1121 entries[i].fence = dma_fence_get_stub(); in drm_syncobj_array_wait_timeout()
1124 dma_fence_is_signaled(entries[i].fence)) { in drm_syncobj_array_wait_timeout()
1151 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1152 if (!fence) in drm_syncobj_array_wait_timeout()
1154 dma_fence_set_deadline(fence, *deadline); in drm_syncobj_array_wait_timeout()
1163 fence = entries[i].fence; in drm_syncobj_array_wait_timeout()
1164 if (!fence) in drm_syncobj_array_wait_timeout()
1168 dma_fence_is_signaled(fence) || in drm_syncobj_array_wait_timeout()
1170 dma_fence_add_callback(fence, in drm_syncobj_array_wait_timeout()
1207 dma_fence_remove_callback(entries[i].fence, in drm_syncobj_array_wait_timeout()
1209 dma_fence_put(entries[i].fence); in drm_syncobj_array_wait_timeout()
1432 static void syncobj_eventfd_entry_fence_func(struct dma_fence *fence, in syncobj_eventfd_entry_fence_func() argument
1447 struct dma_fence *fence; in syncobj_eventfd_entry_func() local
1450 fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); in syncobj_eventfd_entry_func()
1451 if (!fence) in syncobj_eventfd_entry_func()
1454 ret = dma_fence_chain_find_seqno(&fence, entry->point); in syncobj_eventfd_entry_func()
1457 dma_fence_put(fence); in syncobj_eventfd_entry_func()
1459 } else if (!fence) { in syncobj_eventfd_entry_func()
1465 fence = dma_fence_get_stub(); in syncobj_eventfd_entry_func()
1469 entry->fence = fence; in syncobj_eventfd_entry_func()
1475 ret = dma_fence_add_callback(fence, &entry->fence_cb, in syncobj_eventfd_entry_func()
1661 struct dma_fence *fence = dma_fence_get_stub(); in drm_syncobj_timeline_signal_ioctl() local
1664 fence, points[i]); in drm_syncobj_timeline_signal_ioctl()
1665 dma_fence_put(fence); in drm_syncobj_timeline_signal_ioctl()
1704 struct dma_fence *fence; in drm_syncobj_query_ioctl() local
1707 fence = drm_syncobj_fence_get(syncobjs[i]); in drm_syncobj_query_ioctl()
1708 chain = to_dma_fence_chain(fence); in drm_syncobj_query_ioctl()
1711 dma_fence_get(fence); in drm_syncobj_query_ioctl()
1715 point = fence->seqno; in drm_syncobj_query_ioctl()
1717 dma_fence_chain_for_each(iter, fence) { in drm_syncobj_query_ioctl()
1718 if (iter->context != fence->context) { in drm_syncobj_query_ioctl()
1735 dma_fence_put(fence); in drm_syncobj_query_ioctl()