Lines Matching refs:sig_sync
36 pvr_sync_signal_free(struct pvr_sync_signal *sig_sync) in pvr_sync_signal_free() argument
38 if (!sig_sync) in pvr_sync_signal_free()
41 drm_syncobj_put(sig_sync->syncobj); in pvr_sync_signal_free()
42 dma_fence_chain_free(sig_sync->chain); in pvr_sync_signal_free()
43 dma_fence_put(sig_sync->fence); in pvr_sync_signal_free()
44 kfree(sig_sync); in pvr_sync_signal_free()
50 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_cleanup() local
53 xa_for_each(array, i, sig_sync) in pvr_sync_signal_array_cleanup()
54 pvr_sync_signal_free(sig_sync); in pvr_sync_signal_array_cleanup()
62 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_add() local
67 sig_sync = kzalloc(sizeof(*sig_sync), GFP_KERNEL); in pvr_sync_signal_array_add()
68 if (!sig_sync) in pvr_sync_signal_array_add()
71 sig_sync->handle = handle; in pvr_sync_signal_array_add()
72 sig_sync->point = point; in pvr_sync_signal_array_add()
75 sig_sync->chain = dma_fence_chain_alloc(); in pvr_sync_signal_array_add()
76 if (!sig_sync->chain) { in pvr_sync_signal_array_add()
82 sig_sync->syncobj = drm_syncobj_find(file, handle); in pvr_sync_signal_array_add()
83 if (!sig_sync->syncobj) { in pvr_sync_signal_array_add()
93 sig_sync->fence = cur_fence; in pvr_sync_signal_array_add()
95 err = xa_alloc(array, &id, sig_sync, xa_limit_32b, GFP_KERNEL); in pvr_sync_signal_array_add()
99 return sig_sync; in pvr_sync_signal_array_add()
102 pvr_sync_signal_free(sig_sync); in pvr_sync_signal_array_add()
109 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_search() local
112 xa_for_each(array, i, sig_sync) { in pvr_sync_signal_array_search()
113 if (handle == sig_sync->handle && point == sig_sync->point) in pvr_sync_signal_array_search()
114 return sig_sync; in pvr_sync_signal_array_search()
123 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_get() local
125 sig_sync = pvr_sync_signal_array_search(array, handle, point); in pvr_sync_signal_array_get()
126 if (sig_sync) in pvr_sync_signal_array_get()
127 return sig_sync; in pvr_sync_signal_array_get()
139 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_collect_ops() local
149 sig_sync = pvr_sync_signal_array_get(array, file, in pvr_sync_signal_array_collect_ops()
152 if (IS_ERR(sig_sync)) in pvr_sync_signal_array_collect_ops()
153 return PTR_ERR(sig_sync); in pvr_sync_signal_array_collect_ops()
167 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_update_fences() local
172 sig_sync = pvr_sync_signal_array_search(array, sync_ops[i].handle, in pvr_sync_signal_array_update_fences()
174 if (WARN_ON(!sig_sync)) in pvr_sync_signal_array_update_fences()
177 old_fence = sig_sync->fence; in pvr_sync_signal_array_update_fences()
178 sig_sync->fence = dma_fence_get(done_fence); in pvr_sync_signal_array_update_fences()
181 if (WARN_ON(!sig_sync->fence)) in pvr_sync_signal_array_update_fences()
191 struct pvr_sync_signal *sig_sync; in pvr_sync_signal_array_push_fences() local
194 xa_for_each(array, i, sig_sync) { in pvr_sync_signal_array_push_fences()
195 if (sig_sync->chain) { in pvr_sync_signal_array_push_fences()
196 drm_syncobj_add_point(sig_sync->syncobj, sig_sync->chain, in pvr_sync_signal_array_push_fences()
197 sig_sync->fence, sig_sync->point); in pvr_sync_signal_array_push_fences()
198 sig_sync->chain = NULL; in pvr_sync_signal_array_push_fences()
200 drm_syncobj_replace_fence(sig_sync->syncobj, sig_sync->fence); in pvr_sync_signal_array_push_fences()
259 struct pvr_sync_signal *sig_sync; in pvr_sync_add_deps_to_job() local
269 sig_sync = pvr_sync_signal_array_search(signal_array, sync_ops[i].handle, in pvr_sync_add_deps_to_job()
271 if (sig_sync) { in pvr_sync_add_deps_to_job()
272 if (WARN_ON(!sig_sync->fence)) in pvr_sync_add_deps_to_job()
275 fence = dma_fence_get(sig_sync->fence); in pvr_sync_add_deps_to_job()