Lines Matching refs:sync
114 struct xe_sync_entry *sync,
141 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle);
142 if (XE_IOCTL_DBG(xe, !sync->syncobj))
146 sync->fence = drm_syncobj_fence_get(sync->syncobj);
147 if (XE_IOCTL_DBG(xe, !sync->fence))
162 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle);
163 if (XE_IOCTL_DBG(xe, !sync->syncobj))
167 sync->chain_fence = dma_fence_chain_alloc();
168 if (!sync->chain_fence)
171 sync->fence = drm_syncobj_fence_get(sync->syncobj);
172 if (XE_IOCTL_DBG(xe, !sync->fence))
175 err = dma_fence_chain_find_seqno(&sync->fence,
193 sync->addr = sync_in.addr;
195 sync->ufence = user_fence_create(xe, sync_in.addr,
197 if (XE_IOCTL_DBG(xe, IS_ERR(sync->ufence)))
198 return PTR_ERR(sync->ufence);
207 sync->type = sync_in.type;
208 sync->flags = sync_in.flags;
209 sync->timeline_value = sync_in.timeline_value;
215 int xe_sync_entry_add_deps(struct xe_sync_entry *sync, struct xe_sched_job *job)
217 if (sync->fence)
219 dma_fence_get(sync->fence));
224 void xe_sync_entry_signal(struct xe_sync_entry *sync, struct dma_fence *fence)
226 if (!(sync->flags & DRM_XE_SYNC_FLAG_SIGNAL))
229 if (sync->chain_fence) {
230 drm_syncobj_add_point(sync->syncobj, sync->chain_fence,
231 fence, sync->timeline_value);
236 sync->chain_fence = NULL;
237 } else if (sync->syncobj) {
238 drm_syncobj_replace_fence(sync->syncobj, fence);
239 } else if (sync->ufence) {
243 user_fence_get(sync->ufence);
244 err = dma_fence_add_callback(fence, &sync->ufence->cb,
247 kick_ufence(sync->ufence, fence);
250 user_fence_put(sync->ufence);
256 void xe_sync_entry_cleanup(struct xe_sync_entry *sync)
258 if (sync->syncobj)
259 drm_syncobj_put(sync->syncobj);
260 dma_fence_put(sync->fence);
261 dma_fence_chain_free(sync->chain_fence);
262 if (sync->ufence)
263 user_fence_put(sync->ufence);
268 * @sync: input syncs
281 xe_sync_in_fence_get(struct xe_sync_entry *sync, int num_sync,
293 if (sync[i].fence) {
295 fence = sync[i].fence;
310 if (sync[i].fence) {
311 dma_fence_get(sync[i].fence);
312 fences[current_fence++] = sync[i].fence;
352 * xe_sync_ufence_get() - Get user fence from sync
353 * @sync: input sync
355 * Get a user fence reference from sync.
359 struct xe_user_fence *xe_sync_ufence_get(struct xe_sync_entry *sync)
361 user_fence_get(sync->ufence);
363 return sync->ufence;