/linux/drivers/gpu/drm/ |
H A D | drm_syncobj.c | 32 * 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 625 struct drm_syncobj *syncobj; drm_syncobj_create_as_handle() local 639 struct drm_syncobj *syncobj; drm_syncobj_destroy() local 654 struct drm_syncobj *syncobj = file->private_data; drm_syncobj_file_release() local 673 drm_syncobj_get_fd(struct drm_syncobj * syncobj,int * p_fd) drm_syncobj_get_fd() argument 701 struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); drm_syncobj_handle_to_fd() local 715 struct drm_syncobj *syncobj; drm_syncobj_fd_to_handle() local 748 struct drm_syncobj *syncobj; drm_syncobj_import_sync_file_fence() local 824 struct drm_syncobj *syncobj = ptr; drm_syncobj_release_handle() local 1036 syncobj_wait_syncobj_func(struct drm_syncobj * syncobj,struct syncobj_wait_entry * wait) syncobj_wait_syncobj_func() argument 1443 syncobj_eventfd_entry_func(struct drm_syncobj * syncobj,struct syncobj_eventfd_entry * entry) syncobj_eventfd_entry_func() argument 1489 struct drm_syncobj *syncobj; drm_syncobj_eventfd_ioctl() local [all...] |
/linux/include/drm/ |
H A D | drm_syncobj.h | 65 * @file: A file backing for this syncobj. 73 * drm_syncobj_get - acquire a syncobj reference 97 * @syncobj: sync object. 107 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 D | xe_sync.c | 141 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle); in xe_sync_entry_parse() 142 if (XE_IOCTL_DBG(xe, !sync->syncobj)) in xe_sync_entry_parse() 146 sync->fence = drm_syncobj_fence_get(sync->syncobj); in xe_sync_entry_parse() 162 sync->syncobj = drm_syncobj_find(xef->drm, sync_in.handle); in xe_sync_entry_parse() 163 if (XE_IOCTL_DBG(xe, !sync->syncobj)) in xe_sync_entry_parse() 171 sync->fence = drm_syncobj_fence_get(sync->syncobj); in xe_sync_entry_parse() 230 drm_syncobj_add_point(sync->syncobj, sync->chain_fence, in xe_sync_entry_signal() 237 } else if (sync->syncobj) { in xe_sync_entry_signal() 238 drm_syncobj_replace_fence(sync->syncobj, fence); in xe_sync_entry_signal() 258 if (sync->syncobj) in xe_sync_entry_cleanup() [all...] |
H A D | xe_sync_types.h | 18 struct drm_syncobj *syncobj; member
|
/linux/drivers/gpu/drm/msm/ |
H A D | msm_syncobj.c | 39 ret = UERR(EOPNOTSUPP, dev, "syncobj timeline unsupported"); in msm_syncobj_parse_deps() 44 ret = UERR(EINVAL, dev, "invalid syncobj flags: %x", syncobj_desc.flags); in msm_syncobj_parse_deps() 57 ret = UERR(EINVAL, dev, "invalid syncobj handle: %u", i); in msm_syncobj_parse_deps() 115 ret = UERR(EINVAL, dev, "invalid syncobj flags"); in msm_syncobj_parse_post_deps() 122 ret = UERR(EOPNOTSUPP, dev, "syncobj timeline unsupported"); in msm_syncobj_parse_post_deps() 133 post_deps[i].syncobj = in msm_syncobj_parse_post_deps() 135 if (!post_deps[i].syncobj) { in msm_syncobj_parse_post_deps() 136 ret = UERR(EINVAL, dev, "invalid syncobj handle"); 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() [all...] |
H A D | msm_syncobj.h | 12 struct drm_syncobj *syncobj; member
|
/linux/drivers/gpu/drm/imagination/ |
H A D | pvr_sync.c | 41 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 D | pvr_sync.h | 22 * 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/amd/amdgpu/ |
H A D | amdgpu_userq_fence.c | 421 struct drm_syncobj **syncobj = NULL; in amdgpu_userq_signal_ioctl() local 437 syncobj = kmalloc_array(num_syncobj_handles, sizeof(*syncobj), GFP_KERNEL); in amdgpu_userq_signal_ioctl() 438 if (!syncobj) { in amdgpu_userq_signal_ioctl() 444 syncobj[entry] = drm_syncobj_find(filp, syncobj_handles[entry]); in amdgpu_userq_signal_ioctl() 445 if (!syncobj[entry]) { in amdgpu_userq_signal_ioctl() 563 /* Add the created fence to syncobj/BO's */ in amdgpu_userq_signal_ioctl() 565 drm_syncobj_replace_fence(syncobj[i], fence); in amdgpu_userq_signal_ioctl() 586 if (syncobj[entry]) in amdgpu_userq_signal_ioctl() 587 drm_syncobj_put(syncobj[entr in amdgpu_userq_signal_ioctl() [all...] |
H A D | amdgpu_cs.c | 541 p->post_deps[i].syncobj = in amdgpu_cs_p2_syncobj_out() 543 if (!p->post_deps[i].syncobj) in amdgpu_cs_p2_syncobj_out() 583 dep->syncobj = drm_syncobj_find(p->filp, in amdgpu_cs_p2_syncobj_timeline_signal() 585 if (!dep->syncobj) { in amdgpu_cs_p2_syncobj_timeline_signal() 1295 drm_syncobj_add_point(p->post_deps[i].syncobj, in amdgpu_cs_post_dependencies() 1300 drm_syncobj_replace_fence(p->post_deps[i].syncobj, in amdgpu_cs_post_dependencies() 1418 drm_syncobj_put(parser->post_deps[i].syncobj); in amdgpu_cs_parser_fini() 1594 struct drm_syncobj *syncobj; in amdgpu_cs_fence_to_handle_ioctl() local 1607 r = drm_syncobj_create(&syncobj, 0, fence); in amdgpu_cs_fence_to_handle_ioctl() 1611 r = drm_syncobj_get_handle(filp, syncobj, &info->out.handle); in amdgpu_cs_fence_to_handle_ioctl() [all …]
|
H A D | amdgpu_gem.c | 91 struct drm_syncobj **syncobj, in amdgpu_gem_update_timeline_node() argument 98 *syncobj = drm_syncobj_find(filp, syncobj_handle); in amdgpu_gem_update_timeline_node() 99 if (!*syncobj) in amdgpu_gem_update_timeline_node() 108 drm_syncobj_put(*syncobj); in amdgpu_gem_update_timeline_node() 121 struct drm_syncobj *syncobj, in amdgpu_gem_update_bo_mapping() argument 129 if (!syncobj) in amdgpu_gem_update_bo_mapping() 151 drm_syncobj_replace_fence(syncobj, last_update); in amdgpu_gem_update_bo_mapping() 153 drm_syncobj_add_point(syncobj, chain, last_update, point); in amdgpu_gem_update_bo_mapping()
|
H A D | amdgpu_cs.h | 44 struct drm_syncobj *syncobj; member
|
/linux/drivers/gpu/drm/i915/gem/ |
H A D | i915_gem_execbuffer.c | 238 struct drm_syncobj *syncobj; /* Use with ptr_mask_bits() */ member 2791 drm_syncobj_put(ptr_mask_bits(fences[n].syncobj, 2)); in __free_fence_array() 2841 struct drm_syncobj *syncobj; in add_timeline_fence_array() local 2856 syncobj = drm_syncobj_find(eb->file, user_fence.handle); in add_timeline_fence_array() 2857 if (!syncobj) { in add_timeline_fence_array() 2859 "Invalid syncobj handle provided\n"); in add_timeline_fence_array() 2863 fence = drm_syncobj_fence_get(syncobj); in add_timeline_fence_array() 2869 drm_syncobj_put(syncobj); in add_timeline_fence_array() 2881 drm_syncobj_put(syncobj); in add_timeline_fence_array() 2891 drm_syncobj_put(syncobj); in add_timeline_fence_array() 2966 struct drm_syncobj *syncobj; add_fence_array() local 3037 struct drm_syncobj *syncobj; signal_fence_array() local [all...] |
H A D | i915_gem_context_types.h | 211 /** @single_timeline: See See &i915_gem_context.syncobj */ 261 * @syncobj: Shared timeline syncobj 264 * emulate a single timeline across all engines using this syncobj. 265 * For every execbuffer2 call, this syncobj is used as both an in- 272 struct drm_syncobj *syncobj; member
|
H A D | i915_gem_context.c | 1294 if (ctx->syncobj) in i915_gem_context_release_work() 1295 drm_syncobj_put(ctx->syncobj); in i915_gem_context_release_work() 1674 err = drm_syncobj_create(&ctx->syncobj, in i915_gem_create_context()
|
/linux/drivers/gpu/drm/virtio/ |
H A D | virtgpu_submit.c | 23 struct drm_syncobj *syncobj; member 180 drm_syncobj_put(post_deps[i].syncobj); in virtio_gpu_free_post_deps() 229 post_deps[i].syncobj = drm_syncobj_find(submit->file, in virtio_gpu_parse_post_deps() 231 if (!post_deps[i].syncobj) { in virtio_gpu_parse_post_deps() 260 drm_syncobj_add_point(post_deps[i].syncobj, in virtio_gpu_process_post_deps() 265 drm_syncobj_replace_fence(post_deps[i].syncobj, in virtio_gpu_process_post_deps()
|
/linux/drivers/gpu/drm/tegra/ |
H A D | submit.c | 515 struct drm_syncobj *syncobj = NULL; in tegra_drm_ioctl_channel_submit() local 550 syncobj = drm_syncobj_find(file, args->syncobj_out); in tegra_drm_ioctl_channel_submit() 551 if (!syncobj) { in tegra_drm_ioctl_channel_submit() 648 if (syncobj) { in tegra_drm_ioctl_channel_submit() 655 drm_syncobj_replace_fence(syncobj, fence); in tegra_drm_ioctl_channel_submit() 679 if (syncobj) in tegra_drm_ioctl_channel_submit() 680 drm_syncobj_put(syncobj); in tegra_drm_ioctl_channel_submit()
|
/linux/drivers/accel/amdxdna/ |
H A D | aie2_ctx.c | 116 fence = drm_syncobj_fence_get(hwctx->priv->syncobj); in aie2_cmd_get_out_fence() 486 struct drm_syncobj *syncobj; in aie2_ctx_syncobj_create() local 492 ret = drm_syncobj_create(&syncobj, 0, NULL); in aie2_ctx_syncobj_create() 494 XDNA_ERR(xdna, "Create ctx syncobj failed, ret %d", ret); in aie2_ctx_syncobj_create() 497 ret = drm_syncobj_get_handle(filp, syncobj, &hdl); in aie2_ctx_syncobj_create() 499 drm_syncobj_put(syncobj); in aie2_ctx_syncobj_create() 500 XDNA_ERR(xdna, "Create ctx syncobj handle failed, ret %d", ret); in aie2_ctx_syncobj_create() 503 hwctx->priv->syncobj = syncobj; in aie2_ctx_syncobj_create() 515 drm_syncobj_put(hwctx->priv->syncobj); in aie2_ctx_syncobj_destroy() [all...] |
H A D | aie2_pci.h | 150 struct drm_syncobj *syncobj; member
|
/linux/drivers/gpu/drm/v3d/ |
H A D | v3d_sched.c | 84 drm_syncobj_put(query_info->queries[i].syncobj); in v3d_timestamp_query_info_free() 98 drm_syncobj_put(query_info->queries[i].syncobj); in v3d_performance_query_info_free() 486 drm_syncobj_replace_fence(timestamp_query->queries[i].syncobj, in v3d_timestamp_query() 507 drm_syncobj_replace_fence(queries[i].syncobj, NULL); in v3d_reset_timestamp_queries() 552 fence = drm_syncobj_fence_get(queries[i].syncobj); in v3d_copy_query_results() 597 drm_syncobj_replace_fence(performance_query->queries[i].syncobj, NULL); in v3d_reset_performance_queries() 656 fence = drm_syncobj_fence_get(performance_query->queries[i].syncobj); in v3d_copy_performance_query()
|
H A D | v3d_drv.h | 384 struct drm_syncobj *syncobj; member 392 struct drm_syncobj *syncobj; member 473 struct drm_syncobj *syncobj; member
|
/linux/drivers/gpu/drm/panthor/ |
H A D | panthor_drv.c | 219 * a specific syncobj point. 222 * is retrieved from the syncobj itself, and can be NULL if no fence was attached 226 * %DRM_PANTHOR_SYNC_OP_SIGNAL on this syncobj. 236 /** @handle: The syncobj handle. */ 240 * @point: The syncobj point. 247 * @syncobj: The sync object pointed by @handle. 249 struct drm_syncobj *syncobj; member 253 * timeline syncobj. 255 * NULL for regular syncobj, non-NULL for timeline syncobjs. 260 * @fence: The fence to assign to the syncobj o [all...] |
H A D | panthor_sched.c | 2064 struct panthor_syncobj_64b *syncobj; in group_term_post_processing() local 2085 /* Manually update the syncobj seqno to unblock waiters. */ in group_term_post_processing() 2086 syncobj = group->syncobjs->kmap + (i * sizeof(*syncobj)); in group_term_post_processing() 2087 syncobj->status = ~0; in group_term_post_processing() 2088 syncobj->seqno = atomic64_read(&queue->fence_ctx.seqno); in group_term_post_processing() 2462 } *syncobj; in panthor_queue_eval_syncwait() local 2466 syncobj = panthor_queue_get_syncwait_obj(group, queue); in panthor_queue_eval_syncwait() 2467 if (!syncobj) in panthor_queue_eval_syncwait() 2471 syncobj in panthor_queue_eval_syncwait() 2903 struct panthor_syncobj_64b *syncobj; group_sync_upd_work() local [all...] |
/linux/Documentation/gpu/ |
H A D | drm-vm-bind-async.rst | 19 * ``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
|
/linux/drivers/gpu/drm/i915/ |
H A D | Kconfig.debug | 55 select SW_SYNC # signaling validation framework (igt/syncobj*)
|