Lines Matching full:wait

3  * Parts ported from amdgpu (fence wait code).
44 * - Wait for a syncobj's fence to appear and be signaled
51 * - Wait for a given point to appear and/or be signaled
107 * Host-side wait on syncobjs
111 * host-side wait on all of the syncobj fences simultaneously.
112 * If &DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL is set, the wait ioctl will wait on
119 * the host-side wait will first wait for the syncobj to receive a non-NULL
120 * fence and then wait on that fence.
124 * to do a host wait in one thread (or process) which waits on GPU work
130 * handles as well as an array of u64 points and does a host-side wait on all
133 * &DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT also adds the ability to wait for a given
136 * requirement is inherited from the wait-before-signal behavior required by
212 struct syncobj_wait_entry *wait);
241 struct syncobj_wait_entry *wait) in drm_syncobj_fence_add_wait() argument
245 if (wait->fence) in drm_syncobj_fence_add_wait()
254 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
256 list_add_tail(&wait->node, &syncobj->cb_list); 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()
266 struct syncobj_wait_entry *wait) in drm_syncobj_remove_wait() argument
268 if (!wait->node.next) in drm_syncobj_remove_wait()
272 list_del_init(&wait->node); in drm_syncobj_remove_wait()
361 /* 5s default for wait submission */
383 struct syncobj_wait_entry wait; in drm_syncobj_find_fence() local
405 memset(&wait, 0, sizeof(wait)); in drm_syncobj_find_fence()
406 wait.task = current; in drm_syncobj_find_fence()
407 wait.point = point; in drm_syncobj_find_fence()
408 drm_syncobj_fence_add_wait(syncobj, &wait); in drm_syncobj_find_fence()
412 if (wait.fence) { in drm_syncobj_find_fence()
430 *fence = wait.fence; in drm_syncobj_find_fence()
432 if (wait.node.next) in drm_syncobj_find_fence()
433 drm_syncobj_remove_wait(syncobj, &wait); in drm_syncobj_find_fence()
903 struct syncobj_wait_entry *wait = in syncobj_wait_fence_func() local
906 wake_up_process(wait->task); in syncobj_wait_fence_func()
910 struct syncobj_wait_entry *wait) in syncobj_wait_syncobj_func() argument
918 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in syncobj_wait_syncobj_func()
922 wait->fence = dma_fence_get_stub(); in syncobj_wait_syncobj_func()
924 wait->fence = fence; in syncobj_wait_syncobj_func()
927 wake_up_process(wait->task); in syncobj_wait_syncobj_func()
928 list_del_init(&wait->node); in syncobj_wait_syncobj_func()
1005 * fallthough and try a 0 timeout wait! in drm_syncobj_array_wait_timeout()
1109 struct drm_syncobj_wait *wait, in drm_syncobj_array_wait() argument
1117 timeout = drm_timeout_abs_to_jiffies(wait->timeout_nsec); in drm_syncobj_array_wait()
1120 wait->count_handles, in drm_syncobj_array_wait()
1121 wait->flags, in drm_syncobj_array_wait()
1125 wait->first_signaled = first; in drm_syncobj_array_wait()