Home
last modified time | relevance | path

Searched refs:syncobj (Results 1 – 22 of 22) sorted by relevance

/linux/drivers/gpu/drm/
H A Ddrm_syncobj.c32 * DRM synchronisation objects (syncobj, see struct &drm_syncobj) provide a
37 * The syncobj userspace API provides ioctls for several operations:
40 * - Import and export of syncobjs to/from a syncobj file descriptor
41 * - Import and export a syncobj's underlying fence to/from a sync file
42 * - Reset a syncobj (set its fence to NULL)
43 * - Signal a syncobj (set a trivially signaled fence)
44 * - Wait for a syncobj's fence to appear and be signaled
46 * The syncobj userspace API also provides operations to manipulate a syncobj
54 * At it's core, a syncobj i
230 struct drm_syncobj *syncobj; global() member
251 struct drm_syncobj *syncobj; drm_syncobj_find() local
266 drm_syncobj_fence_add_wait(struct drm_syncobj * syncobj,struct syncobj_wait_entry * wait) drm_syncobj_fence_add_wait() argument
291 drm_syncobj_remove_wait(struct drm_syncobj * syncobj,struct syncobj_wait_entry * wait) drm_syncobj_remove_wait() argument
315 drm_syncobj_add_eventfd(struct drm_syncobj * syncobj,struct syncobj_eventfd_entry * entry) drm_syncobj_add_eventfd() argument
333 drm_syncobj_add_point(struct drm_syncobj * syncobj,struct dma_fence_chain * chain,struct dma_fence * fence,uint64_t point) drm_syncobj_add_point() argument
372 drm_syncobj_replace_fence(struct drm_syncobj * syncobj,struct dma_fence * fence) drm_syncobj_replace_fence() argument
407 drm_syncobj_assign_null_handle(struct drm_syncobj * syncobj) drm_syncobj_assign_null_handle() argument
440 struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); drm_syncobj_find_fence() local
528 struct drm_syncobj *syncobj = container_of(kref, drm_syncobj_free() local
558 struct drm_syncobj *syncobj; drm_syncobj_create() local
597 drm_syncobj_get_handle(struct drm_file * file_private,struct drm_syncobj * syncobj,u32 * handle) drm_syncobj_get_handle() argument
617 struct drm_syncobj *syncobj; drm_syncobj_create_as_handle() local
631 struct drm_syncobj *syncobj; drm_syncobj_destroy() local
643 struct drm_syncobj *syncobj = file->private_data; drm_syncobj_file_release() local
662 drm_syncobj_get_fd(struct drm_syncobj * syncobj,int * p_fd) drm_syncobj_get_fd() argument
690 struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); drm_syncobj_handle_to_fd() local
704 struct drm_syncobj *syncobj; drm_syncobj_fd_to_handle() local
730 struct drm_syncobj *syncobj; drm_syncobj_import_sync_file_fence() local
813 struct drm_syncobj *syncobj; drm_syncobj_release() local
1011 syncobj_wait_syncobj_func(struct drm_syncobj * syncobj,struct syncobj_wait_entry * wait) syncobj_wait_syncobj_func() argument
1418 syncobj_eventfd_entry_func(struct drm_syncobj * syncobj,struct syncobj_eventfd_entry * entry) syncobj_eventfd_entry_func() argument
1464 struct drm_syncobj *syncobj; drm_syncobj_eventfd_ioctl() local
[all...]
/linux/include/drm/
H A Ddrm_syncobj.h107 drm_syncobj_fence_get(struct drm_syncobj *syncobj) in drm_syncobj_fence_get() argument
112 fence = dma_fence_get_rcu_safe(&syncobj->fence); in drm_syncobj_fence_get()
120 void drm_syncobj_add_point(struct drm_syncobj *syncobj,
124 void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
133 struct drm_syncobj *syncobj, u32 *handle);
134 int drm_syncobj_get_fd(struct drm_syncobj *syncobj, int *p_fd);
/linux/drivers/gpu/drm/xe/
H A Dxe_sync.c143 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle); in xe_sync_entry_parse()
144 if (XE_IOCTL_DBG(xe, !sync->syncobj)) in xe_sync_entry_parse()
148 sync->fence = drm_syncobj_fence_get(sync->syncobj); in xe_sync_entry_parse()
166 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle); in xe_sync_entry_parse()
167 if (XE_IOCTL_DBG(xe, !sync->syncobj)) in xe_sync_entry_parse()
177 sync->fence = drm_syncobj_fence_get(sync->syncobj); in xe_sync_entry_parse()
275 drm_syncobj_add_point(sync->syncobj, sync->chain_fence, in xe_sync_entry_signal()
282 } else if (sync->syncobj) { in xe_sync_entry_signal()
283 drm_syncobj_replace_fence(sync->syncobj, fence); in xe_sync_entry_signal()
308 if (sync->syncobj) in xe_sync_entry_cleanup()
[all...]
H A Dxe_sync_types.h18 struct drm_syncobj *syncobj; member
/linux/drivers/gpu/drm/msm/
H A Dmsm_syncobj.c133 post_deps[i].syncobj = in msm_syncobj_parse_post_deps()
135 if (!post_deps[i].syncobj) { in msm_syncobj_parse_post_deps()
144 if (post_deps[j].syncobj) in msm_syncobj_parse_post_deps()
145 drm_syncobj_put(post_deps[j].syncobj); in msm_syncobj_parse_post_deps()
163 drm_syncobj_add_point(post_deps[i].syncobj, in msm_syncobj_process_post_deps()
168 drm_syncobj_replace_fence(post_deps[i].syncobj, in msm_syncobj_process_post_deps()
H A Dmsm_gem_submit.c842 drm_syncobj_put(post_deps[i].syncobj); in msm_ioctl_gem_submit()
H A Dmsm_gem_vma.c1613 drm_syncobj_put(post_deps[i].syncobj); in msm_ioctl_vm_bind()
/linux/drivers/gpu/drm/imagination/
H A Dpvr_sync.c41 drm_syncobj_put(sig_sync->syncobj); in pvr_sync_signal_free()
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()
196 drm_syncobj_add_point(sig_sync->syncobj, sig_sync->chain, 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()
H A Dpvr_sync.h22 * struct pvr_sync_signal - Object encoding a syncobj signal operation
27 * signals a syncobj point that's later waited on by a subsequent job.
30 /** @handle: Handle of the syncobj to signal. */
34 * @point: Point to signal in the syncobj.
40 /** @syncobj: Syncobj retrieved from the handle. */
41 struct drm_syncobj *syncobj; member
45 * existing timeline syncobj.
47 * Should be zero when manipulating a regular syncobj.
52 * @fence: New fence object to attach to the syncobj.
/linux/drivers/gpu/drm/v3d/
H A Dv3d_submit.c295 drm_syncobj_replace_fence(se->out_syncs[i].syncobj, in v3d_setup_csd_jobs_and_bos()
297 drm_syncobj_put(se->out_syncs[i].syncobj); in v3d_setup_csd_jobs_and_bos()
355 drm_syncobj_put(se->out_syncs[i].syncobj); in v3d_get_multisync_post_deps()
388 se->out_syncs[i].syncobj = drm_syncobj_find(file_priv, in v3d_get_multisync_post_deps()
390 if (!se->out_syncs[i].syncobj) { in v3d_get_multisync_post_deps()
401 drm_syncobj_put(se->out_syncs[i].syncobj); in v3d_get_multisync_submit_deps()
407 /* Get data for multiple binary semaphores synchronization. Parse syncobj in v3d_get_multisync_submit_deps()
550 query_info->queries[i].syncobj = drm_syncobj_find(file_priv, in v3d_get_cpu_timestamp_query_params()
552 if (!query_info->queries[i].syncobj) { in v3d_get_cpu_timestamp_query_params()
602 query_info->queries[i].syncobj in v3d_get_cpu_reset_timestamp_params()
[all...]
H A Dv3d_sched.c106 drm_syncobj_put(query_info->queries[i].syncobj); in v3d_timestamp_query_info_free()
120 drm_syncobj_put(query_info->queries[i].syncobj); in v3d_performance_query_info_free()
459 drm_syncobj_replace_fence(timestamp_query->queries[i].syncobj, in v3d_timestamp_query()
480 drm_syncobj_replace_fence(queries[i].syncobj, NULL); in v3d_reset_timestamp_queries()
525 fence = drm_syncobj_fence_get(queries[i].syncobj); in v3d_copy_query_results()
570 drm_syncobj_replace_fence(performance_query->queries[i].syncobj, NULL); in v3d_reset_performance_queries()
629 fence = drm_syncobj_fence_get(performance_query->queries[i].syncobj); in v3d_copy_performance_query()
/linux/drivers/gpu/drm/i915/gem/
H A Di915_gem_execbuffer.c239 struct drm_syncobj *syncobj; /* Use with ptr_mask_bits() */ member
2778 drm_syncobj_put(ptr_mask_bits(fences[n].syncobj, 2)); in __free_fence_array()
2828 struct drm_syncobj *syncobj; in add_timeline_fence_array()
2843 syncobj = drm_syncobj_find(eb->file, user_fence.handle); in add_timeline_fence_array()
2844 if (!syncobj) { in add_timeline_fence_array()
2846 "Invalid syncobj handle provided\n"); in add_timeline_fence_array()
2850 fence = drm_syncobj_fence_get(syncobj); in add_timeline_fence_array()
2856 drm_syncobj_put(syncobj); in add_timeline_fence_array()
2868 drm_syncobj_put(syncobj); in add_timeline_fence_array()
2878 drm_syncobj_put(syncobj); in add_timeline_fence_array()
2830 struct drm_syncobj *syncobj; add_timeline_fence_array() local
2955 struct drm_syncobj *syncobj; add_fence_array() local
3026 struct drm_syncobj *syncobj; signal_fence_array() local
[all...]
H A Di915_gem_context.c1293 if (ctx->syncobj) in i915_gem_context_release_work()
1294 drm_syncobj_put(ctx->syncobj); in i915_gem_context_release_work()
1673 err = drm_syncobj_create(&ctx->syncobj, in i915_gem_create_context()
/linux/drivers/gpu/drm/virtio/
H A Dvirtgpu_submit.c23 struct drm_syncobj *syncobj; member
182 drm_syncobj_put(post_deps[i].syncobj); in virtio_gpu_free_post_deps()
231 post_deps[i].syncobj = drm_syncobj_find(submit->file, in virtio_gpu_parse_post_deps()
233 if (!post_deps[i].syncobj) { in virtio_gpu_parse_post_deps()
262 drm_syncobj_add_point(post_deps[i].syncobj, in virtio_gpu_process_post_deps()
267 drm_syncobj_replace_fence(post_deps[i].syncobj, in virtio_gpu_process_post_deps()
/linux/drivers/gpu/drm/tegra/
H A Dsubmit.c514 struct drm_syncobj *syncobj = NULL; in tegra_drm_ioctl_channel_submit()
549 syncobj = drm_syncobj_find(file, args->syncobj_out); in tegra_drm_ioctl_channel_submit()
550 if (!syncobj) { in tegra_drm_ioctl_channel_submit()
647 if (syncobj) { in tegra_drm_ioctl_channel_submit()
654 drm_syncobj_replace_fence(syncobj, fence); in tegra_drm_ioctl_channel_submit()
678 if (syncobj) in tegra_drm_ioctl_channel_submit()
679 drm_syncobj_put(syncobj); in tegra_drm_ioctl_channel_submit()
515 struct drm_syncobj *syncobj = NULL; tegra_drm_ioctl_channel_submit() local
/linux/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_userq_fence.c465 struct drm_syncobj **syncobj; in amdgpu_userq_signal_ioctl() local
485 syncobj = kmalloc_array(num_syncobj_handles, sizeof(*syncobj), in amdgpu_userq_signal_ioctl()
487 if (!syncobj) { in amdgpu_userq_signal_ioctl()
493 syncobj[entry] = drm_syncobj_find(filp, syncobj_handles[entry]); in amdgpu_userq_signal_ioctl()
494 if (!syncobj[entry]) { in amdgpu_userq_signal_ioctl()
555 /* And publish the new fence in the BOs and syncobj */ in amdgpu_userq_signal_ioctl()
565 drm_syncobj_replace_fence(syncobj[i], &fence->base); in amdgpu_userq_signal_ioctl()
584 drm_syncobj_put(syncobj[entry]); in amdgpu_userq_signal_ioctl()
585 kfree(syncobj); in amdgpu_userq_signal_ioctl()
[all...]
H A Damdgpu_cs.h44 struct drm_syncobj *syncobj; member
H A Damdgpu_gem.c94 struct drm_syncobj **syncobj, in amdgpu_gem_update_timeline_node()
101 *syncobj = drm_syncobj_find(filp, syncobj_handle); in amdgpu_gem_update_timeline_node()
102 if (!*syncobj) in amdgpu_gem_update_timeline_node()
111 drm_syncobj_put(*syncobj); in amdgpu_gem_update_timeline_node()
112 *syncobj = NULL; in amdgpu_gem_update_timeline_node()
894 /* Add input syncobj fences (if any) for synchronization. */ in amdgpu_gem_va_ioctl()
931 * Prepare the timeline syncobj node if the user requested a VM in amdgpu_gem_va_ioctl()
932 * timeline update. This only allocates/looks up the syncobj and in amdgpu_gem_va_ioctl()
93 amdgpu_gem_update_timeline_node(struct drm_file * filp,uint32_t syncobj_handle,uint64_t point,struct drm_syncobj ** syncobj,struct dma_fence_chain ** chain) amdgpu_gem_update_timeline_node() argument
/linux/drivers/accel/amdxdna/
H A Daie2_ctx.c138 fence = drm_syncobj_fence_get(hwctx->priv->syncobj); in aie2_hwctx_suspend_cb()
608 struct drm_syncobj *syncobj; in aie2_hwctx_init()
614 ret = drm_syncobj_create(&syncobj, 0, NULL); in aie2_hwctx_init()
616 XDNA_ERR(xdna, "Create ctx syncobj failed, ret %d", ret); in aie2_hwctx_init()
619 ret = drm_syncobj_get_handle(filp, syncobj, &hdl); in aie2_hwctx_init()
621 drm_syncobj_put(syncobj); in aie2_hwctx_init()
622 XDNA_ERR(xdna, "Create ctx syncobj handle failed, ret %d", ret); in aie2_hwctx_init()
625 hwctx->priv->syncobj = syncobj; in aie2_hwctx_init()
637 drm_syncobj_put(hwctx->priv->syncobj); in aie2_hwctx_init()
570 struct drm_syncobj *syncobj; aie2_ctx_syncobj_create() local
[all...]
H A Daie2_pci.h124 struct drm_syncobj *syncobj;
183 struct drm_syncobj *syncobj; global() member
/linux/drivers/gpu/drm/panthor/
H A Dpanthor_sched.c2173 struct panthor_syncobj_64b *syncobj; in group_term_post_processing()
2194 /* Manually update the syncobj seqno to unblock waiters. */ in group_term_post_processing()
2195 syncobj = group->syncobjs->kmap + (i * sizeof(*syncobj)); in group_term_post_processing()
2196 syncobj->status = ~0; in group_term_post_processing()
2197 syncobj->seqno = atomic64_read(&queue->fence_ctx.seqno); in group_term_post_processing()
2585 } *syncobj; in panthor_queue_eval_syncwait()
2589 syncobj = panthor_queue_get_syncwait_obj(group, queue); in panthor_queue_eval_syncwait()
2590 if (!syncobj) in panthor_queue_eval_syncwait()
2594 syncobj in panthor_queue_eval_syncwait()
2171 struct panthor_syncobj_64b *syncobj; group_term_post_processing() local
2583 } *syncobj; panthor_queue_eval_syncwait() local
3043 struct panthor_syncobj_64b *syncobj = NULL; queue_check_job_completion() local
[all...]
/linux/Documentation/gpu/
H A Ddrm-vm-bind-async.rst19 * ``syncobj``: A container that abstracts synchronization objects. The
21 driver specific. A syncobj typically indicates the type of the
24 * ``in-syncobj``: Argument to a VM_BIND IOCTL, the VM_BIND operation waits
27 * ``out-syncobj``: Argument to a VM_BIND_IOCTL, the VM_BIND operation