Lines Matching defs:sync

103 			struct xe_sync_entry *sync,
130 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle);
131 if (XE_IOCTL_DBG(xe, !sync->syncobj))
135 sync->fence = drm_syncobj_fence_get(sync->syncobj);
136 if (XE_IOCTL_DBG(xe, !sync->fence))
151 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle);
152 if (XE_IOCTL_DBG(xe, !sync->syncobj))
156 sync->chain_fence = dma_fence_chain_alloc();
157 if (!sync->chain_fence)
160 sync->fence = drm_syncobj_fence_get(sync->syncobj);
161 if (XE_IOCTL_DBG(xe, !sync->fence))
164 err = dma_fence_chain_find_seqno(&sync->fence,
182 sync->addr = sync_in.addr;
184 sync->ufence = user_fence_create(xe, sync_in.addr,
186 if (XE_IOCTL_DBG(xe, !sync->ufence))
196 sync->type = sync_in.type;
197 sync->flags = sync_in.flags;
198 sync->timeline_value = sync_in.timeline_value;
203 int xe_sync_entry_wait(struct xe_sync_entry *sync)
205 if (sync->fence)
206 dma_fence_wait(sync->fence, true);
211 int xe_sync_entry_add_deps(struct xe_sync_entry *sync, struct xe_sched_job *job)
215 if (sync->fence) {
217 dma_fence_get(sync->fence));
219 dma_fence_put(sync->fence);
227 void xe_sync_entry_signal(struct xe_sync_entry *sync, struct xe_sched_job *job,
230 if (!(sync->flags & DRM_XE_SYNC_FLAG_SIGNAL))
233 if (sync->chain_fence) {
234 drm_syncobj_add_point(sync->syncobj, sync->chain_fence,
235 fence, sync->timeline_value);
240 sync->chain_fence = NULL;
241 } else if (sync->syncobj) {
242 drm_syncobj_replace_fence(sync->syncobj, fence);
243 } else if (sync->ufence) {
247 user_fence_get(sync->ufence);
248 err = dma_fence_add_callback(fence, &sync->ufence->cb,
251 kick_ufence(sync->ufence, fence);
254 user_fence_put(sync->ufence);
257 } else if (sync->type == DRM_XE_SYNC_TYPE_USER_FENCE) {
259 job->user_fence.addr = sync->addr;
260 job->user_fence.value = sync->timeline_value;
264 void xe_sync_entry_cleanup(struct xe_sync_entry *sync)
266 if (sync->syncobj)
267 drm_syncobj_put(sync->syncobj);
268 if (sync->fence)
269 dma_fence_put(sync->fence);
270 if (sync->chain_fence)
271 dma_fence_put(&sync->chain_fence->base);
272 if (sync->ufence)
273 user_fence_put(sync->ufence);
278 * @sync: input syncs
291 xe_sync_in_fence_get(struct xe_sync_entry *sync, int num_sync,
303 if (sync[i].fence) {
305 fence = sync[i].fence;
320 if (sync[i].fence) {
321 dma_fence_get(sync[i].fence);
322 fences[current_fence++] = sync[i].fence;
347 * xe_sync_ufence_get() - Get user fence from sync
348 * @sync: input sync
350 * Get a user fence reference from sync.
354 struct xe_user_fence *xe_sync_ufence_get(struct xe_sync_entry *sync)
356 user_fence_get(sync->ufence);
358 return sync->ufence;