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
135 * handles as well as an array of u64 points and does a host-side wait on all
138 * &DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT also adds the ability to wait for a given
141 * requirement is inherited from the wait-before-signal behavior required by
144 * Alternatively, &DRM_IOCTL_SYNCOBJ_EVENTFD can be used to wait without
146 * integrate the wait in an event loop.
224 struct syncobj_wait_entry *wait);
267 struct syncobj_wait_entry *wait) in drm_syncobj_fence_add_wait() argument
271 if (wait->fence) in drm_syncobj_fence_add_wait()
280 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { in drm_syncobj_fence_add_wait()
282 list_add_tail(&wait->node, &syncobj->cb_list); 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()
292 struct syncobj_wait_entry *wait) in drm_syncobj_remove_wait() argument
294 if (!wait->node.next) in drm_syncobj_remove_wait()
298 list_del_init(&wait->node); in drm_syncobj_remove_wait()
419 /* 5s default for wait submission */
441 struct syncobj_wait_entry wait; in drm_syncobj_find_fence() local
483 memset(&wait, 0, sizeof(wait)); in drm_syncobj_find_fence()
484 wait.task = current; in drm_syncobj_find_fence()
485 wait.point = point; in drm_syncobj_find_fence()
486 drm_syncobj_fence_add_wait(syncobj, &wait); in drm_syncobj_find_fence()
490 if (wait.fence) { in drm_syncobj_find_fence()
508 *fence = wait.fence; in drm_syncobj_find_fence()
510 if (wait.node.next) in drm_syncobj_find_fence()
511 drm_syncobj_remove_wait(syncobj, &wait); in drm_syncobj_find_fence()
1005 struct syncobj_wait_entry *wait = in syncobj_wait_fence_func() local
1008 wake_up_process(wait->task); in syncobj_wait_fence_func()
1012 struct syncobj_wait_entry *wait) in syncobj_wait_syncobj_func() argument
1020 if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { 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()
1029 wake_up_process(wait->task); in syncobj_wait_syncobj_func()
1030 list_del_init(&wait->node); in syncobj_wait_syncobj_func()
1115 * fallthough and try a 0 timeout wait! in drm_syncobj_array_wait_timeout()
1229 struct drm_syncobj_wait *wait, in drm_syncobj_array_wait() argument
1238 timeout = drm_timeout_abs_to_jiffies(wait->timeout_nsec); in drm_syncobj_array_wait()
1241 wait->count_handles, in drm_syncobj_array_wait()
1242 wait->flags, in drm_syncobj_array_wait()
1247 wait->first_signaled = first; in drm_syncobj_array_wait()