Home
last modified time | relevance | path

Searched refs:fence (Results 1 – 25 of 262) sorted by relevance

1234567891011

/Linux-v4.19/drivers/dma-buf/
Ddma-fence.c102 int dma_fence_signal_locked(struct dma_fence *fence) in dma_fence_signal_locked() argument
107 lockdep_assert_held(fence->lock); in dma_fence_signal_locked()
109 if (WARN_ON(!fence)) in dma_fence_signal_locked()
112 if (test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { in dma_fence_signal_locked()
120 fence->timestamp = ktime_get(); in dma_fence_signal_locked()
121 set_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags); in dma_fence_signal_locked()
122 trace_dma_fence_signaled(fence); in dma_fence_signal_locked()
125 list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) { in dma_fence_signal_locked()
127 cur->func(fence, cur); in dma_fence_signal_locked()
146 int dma_fence_signal(struct dma_fence *fence) in dma_fence_signal() argument
[all …]
Dseqno-fence.c24 static const char *seqno_fence_get_driver_name(struct dma_fence *fence) in seqno_fence_get_driver_name() argument
26 struct seqno_fence *seqno_fence = to_seqno_fence(fence); in seqno_fence_get_driver_name()
28 return seqno_fence->ops->get_driver_name(fence); in seqno_fence_get_driver_name()
31 static const char *seqno_fence_get_timeline_name(struct dma_fence *fence) in seqno_fence_get_timeline_name() argument
33 struct seqno_fence *seqno_fence = to_seqno_fence(fence); in seqno_fence_get_timeline_name()
35 return seqno_fence->ops->get_timeline_name(fence); in seqno_fence_get_timeline_name()
38 static bool seqno_enable_signaling(struct dma_fence *fence) in seqno_enable_signaling() argument
40 struct seqno_fence *seqno_fence = to_seqno_fence(fence); in seqno_enable_signaling()
42 return seqno_fence->ops->enable_signaling(fence); in seqno_enable_signaling()
45 static bool seqno_signaled(struct dma_fence *fence) in seqno_signaled() argument
[all …]
Dreservation.c105 struct dma_fence *fence) in reservation_object_add_shared_inplace() argument
110 dma_fence_get(fence); in reservation_object_add_shared_inplace()
121 if (old_fence->context == fence->context) { in reservation_object_add_shared_inplace()
123 RCU_INIT_POINTER(fobj->shared[i], fence); in reservation_object_add_shared_inplace()
142 RCU_INIT_POINTER(fobj->shared[signaled_idx], fence); in reservation_object_add_shared_inplace()
145 RCU_INIT_POINTER(fobj->shared[fobj->shared_count], fence); in reservation_object_add_shared_inplace()
159 struct dma_fence *fence) in reservation_object_add_shared_replace() argument
163 dma_fence_get(fence); in reservation_object_add_shared_replace()
166 RCU_INIT_POINTER(fobj->shared[0], fence); in reservation_object_add_shared_replace()
183 if (check->context == fence->context || in reservation_object_add_shared_replace()
[all …]
Dsync_file.c73 struct sync_file *sync_file_create(struct dma_fence *fence) in sync_file_create() argument
81 sync_file->fence = dma_fence_get(fence); in sync_file_create()
114 struct dma_fence *fence; in sync_file_get_fence() local
120 fence = dma_fence_get(sync_file->fence); in sync_file_get_fence()
123 return fence; in sync_file_get_fence()
145 struct dma_fence *fence = sync_file->fence; in sync_file_get_name() local
148 fence->ops->get_driver_name(fence), in sync_file_get_name()
149 fence->ops->get_timeline_name(fence), in sync_file_get_name()
150 fence->context, in sync_file_get_name()
151 fence->seqno); in sync_file_get_name()
[all …]
/Linux-v4.19/include/linux/
Ddma-fence.h93 typedef void (*dma_fence_func_t)(struct dma_fence *fence,
123 const char * (*get_driver_name)(struct dma_fence *fence);
135 const char * (*get_timeline_name)(struct dma_fence *fence);
172 bool (*enable_signaling)(struct dma_fence *fence);
189 bool (*signaled)(struct dma_fence *fence);
211 signed long (*wait)(struct dma_fence *fence,
222 void (*release)(struct dma_fence *fence);
232 void (*fence_value_str)(struct dma_fence *fence, char *str, int size);
242 void (*timeline_value_str)(struct dma_fence *fence,
246 void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
[all …]
Dseqno-fence.h50 to_seqno_fence(struct dma_fence *fence) in to_seqno_fence() argument
52 if (fence->ops != &seqno_fence_ops) in to_seqno_fence()
54 return container_of(fence, struct seqno_fence, base); in to_seqno_fence()
95 seqno_fence_init(struct seqno_fence *fence, spinlock_t *lock, in seqno_fence_init() argument
101 BUG_ON(!fence || !sync_buf || !ops); in seqno_fence_init()
109 fence->ops = ops; in seqno_fence_init()
110 dma_fence_init(&fence->base, &seqno_fence_ops, lock, context, seqno); in seqno_fence_init()
112 fence->sync_buf = sync_buf; in seqno_fence_init()
113 fence->seqno_ofs = seqno_ofs; in seqno_fence_init()
114 fence->condition = cond; in seqno_fence_init()
/Linux-v4.19/drivers/gpu/drm/i915/
Di915_sw_fence.c39 static inline void debug_fence_init(struct i915_sw_fence *fence) in debug_fence_init() argument
41 debug_object_init(fence, &i915_sw_fence_debug_descr); in debug_fence_init()
44 static inline void debug_fence_init_onstack(struct i915_sw_fence *fence) in debug_fence_init_onstack() argument
46 debug_object_init_on_stack(fence, &i915_sw_fence_debug_descr); in debug_fence_init_onstack()
49 static inline void debug_fence_activate(struct i915_sw_fence *fence) in debug_fence_activate() argument
51 debug_object_activate(fence, &i915_sw_fence_debug_descr); in debug_fence_activate()
54 static inline void debug_fence_set_state(struct i915_sw_fence *fence, in debug_fence_set_state() argument
57 debug_object_active_state(fence, &i915_sw_fence_debug_descr, old, new); in debug_fence_set_state()
60 static inline void debug_fence_deactivate(struct i915_sw_fence *fence) in debug_fence_deactivate() argument
62 debug_object_deactivate(fence, &i915_sw_fence_debug_descr); in debug_fence_deactivate()
[all …]
Di915_gem_fence_reg.c60 static void i965_write_fence_reg(struct drm_i915_fence_reg *fence, in i965_write_fence_reg() argument
67 if (INTEL_GEN(fence->i915) >= 6) { in i965_write_fence_reg()
68 fence_reg_lo = FENCE_REG_GEN6_LO(fence->id); in i965_write_fence_reg()
69 fence_reg_hi = FENCE_REG_GEN6_HI(fence->id); in i965_write_fence_reg()
73 fence_reg_lo = FENCE_REG_965_LO(fence->id); in i965_write_fence_reg()
74 fence_reg_hi = FENCE_REG_965_HI(fence->id); in i965_write_fence_reg()
96 struct drm_i915_private *dev_priv = fence->i915; in i965_write_fence_reg()
116 static void i915_write_fence_reg(struct drm_i915_fence_reg *fence, in i915_write_fence_reg() argument
132 if (is_y_tiled && HAS_128_BYTE_Y_TILING(fence->i915)) in i915_write_fence_reg()
148 struct drm_i915_private *dev_priv = fence->i915; in i915_write_fence_reg()
[all …]
Di915_sw_fence.h42 void __i915_sw_fence_init(struct i915_sw_fence *fence,
47 #define i915_sw_fence_init(fence, fn) \ argument
51 __i915_sw_fence_init((fence), (fn), #fence, &__key); \
54 #define i915_sw_fence_init(fence, fn) \ argument
55 __i915_sw_fence_init((fence), (fn), NULL, NULL)
59 void i915_sw_fence_fini(struct i915_sw_fence *fence);
61 static inline void i915_sw_fence_fini(struct i915_sw_fence *fence) {} in i915_sw_fence_fini() argument
64 void i915_sw_fence_commit(struct i915_sw_fence *fence);
66 int i915_sw_fence_await_sw_fence(struct i915_sw_fence *fence,
69 int i915_sw_fence_await_sw_fence_gfp(struct i915_sw_fence *fence,
[all …]
/Linux-v4.19/drivers/gpu/drm/nouveau/
Dnouveau_fence.c45 from_fence(struct dma_fence *fence) in from_fence() argument
47 return container_of(fence, struct nouveau_fence, base); in from_fence()
51 nouveau_fctx(struct nouveau_fence *fence) in nouveau_fctx() argument
53 return container_of(fence->base.lock, struct nouveau_fence_chan, lock); in nouveau_fctx()
57 nouveau_fence_signal(struct nouveau_fence *fence) in nouveau_fence_signal() argument
61 dma_fence_signal_locked(&fence->base); in nouveau_fence_signal()
62 list_del(&fence->head); in nouveau_fence_signal()
63 rcu_assign_pointer(fence->channel, NULL); in nouveau_fence_signal()
65 if (test_bit(DMA_FENCE_FLAG_USER_BITS, &fence->base.flags)) { in nouveau_fence_signal()
66 struct nouveau_fence_chan *fctx = nouveau_fctx(fence); in nouveau_fence_signal()
[all …]
/Linux-v4.19/drivers/gpu/drm/vgem/
Dvgem_fence.c36 static const char *vgem_fence_get_driver_name(struct dma_fence *fence) in vgem_fence_get_driver_name() argument
41 static const char *vgem_fence_get_timeline_name(struct dma_fence *fence) in vgem_fence_get_timeline_name() argument
46 static bool vgem_fence_signaled(struct dma_fence *fence) in vgem_fence_signaled() argument
51 static bool vgem_fence_enable_signaling(struct dma_fence *fence) in vgem_fence_enable_signaling() argument
58 struct vgem_fence *fence = container_of(base, typeof(*fence), base); in vgem_fence_release() local
60 del_timer_sync(&fence->timer); in vgem_fence_release()
61 dma_fence_free(&fence->base); in vgem_fence_release()
64 static void vgem_fence_value_str(struct dma_fence *fence, char *str, int size) in vgem_fence_value_str() argument
66 snprintf(str, size, "%u", fence->seqno); in vgem_fence_value_str()
69 static void vgem_fence_timeline_value_str(struct dma_fence *fence, char *str, in vgem_fence_timeline_value_str() argument
[all …]
/Linux-v4.19/include/trace/events/
Ddma_fence.h14 TP_PROTO(struct dma_fence *fence),
16 TP_ARGS(fence),
19 __string(driver, fence->ops->get_driver_name(fence))
20 __string(timeline, fence->ops->get_timeline_name(fence))
26 __assign_str(driver, fence->ops->get_driver_name(fence))
27 __assign_str(timeline, fence->ops->get_timeline_name(fence))
28 __entry->context = fence->context;
29 __entry->seqno = fence->seqno;
39 TP_PROTO(struct dma_fence *fence),
41 TP_ARGS(fence)
[all …]
/Linux-v4.19/drivers/gpu/drm/amd/amdgpu/
Damdgpu_amdkfd_fence.c65 struct amdgpu_amdkfd_fence *fence; in amdgpu_amdkfd_fence_create() local
67 fence = kzalloc(sizeof(*fence), GFP_KERNEL); in amdgpu_amdkfd_fence_create()
68 if (fence == NULL) in amdgpu_amdkfd_fence_create()
73 fence->mm = mm; in amdgpu_amdkfd_fence_create()
74 get_task_comm(fence->timeline_name, current); in amdgpu_amdkfd_fence_create()
75 spin_lock_init(&fence->lock); in amdgpu_amdkfd_fence_create()
77 dma_fence_init(&fence->base, &amdkfd_fence_ops, &fence->lock, in amdgpu_amdkfd_fence_create()
80 return fence; in amdgpu_amdkfd_fence_create()
85 struct amdgpu_amdkfd_fence *fence; in to_amdgpu_amdkfd_fence() local
90 fence = container_of(f, struct amdgpu_amdkfd_fence, base); in to_amdgpu_amdkfd_fence()
[all …]
Damdgpu_job.c98 f = job->base.s_fence ? &job->base.s_fence->finished : job->fence; in amdgpu_job_free_resources()
110 dma_fence_put(job->fence); in amdgpu_job_free_cb()
120 dma_fence_put(job->fence); in amdgpu_job_free()
153 struct dma_fence **fence) in amdgpu_job_submit_direct() argument
158 r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, NULL, fence); in amdgpu_job_submit_direct()
159 job->fence = dma_fence_get(*fence); in amdgpu_job_submit_direct()
173 struct dma_fence *fence; in amdgpu_job_dependency() local
177 fence = amdgpu_sync_get_fence(&job->sync, &explicit); in amdgpu_job_dependency()
178 if (fence && explicit) { in amdgpu_job_dependency()
179 if (drm_sched_dependency_optimized(fence, s_entity)) { in amdgpu_job_dependency()
[all …]
/Linux-v4.19/drivers/gpu/drm/scheduler/
Dsched_fence.c49 void drm_sched_fence_scheduled(struct drm_sched_fence *fence) in drm_sched_fence_scheduled() argument
51 int ret = dma_fence_signal(&fence->scheduled); in drm_sched_fence_scheduled()
54 DMA_FENCE_TRACE(&fence->scheduled, in drm_sched_fence_scheduled()
57 DMA_FENCE_TRACE(&fence->scheduled, in drm_sched_fence_scheduled()
61 void drm_sched_fence_finished(struct drm_sched_fence *fence) in drm_sched_fence_finished() argument
63 int ret = dma_fence_signal(&fence->finished); in drm_sched_fence_finished()
66 DMA_FENCE_TRACE(&fence->finished, in drm_sched_fence_finished()
69 DMA_FENCE_TRACE(&fence->finished, in drm_sched_fence_finished()
73 static const char *drm_sched_fence_get_driver_name(struct dma_fence *fence) in drm_sched_fence_get_driver_name() argument
80 struct drm_sched_fence *fence = to_drm_sched_fence(f); in drm_sched_fence_get_timeline_name() local
[all …]
/Linux-v4.19/drivers/gpu/drm/vmwgfx/
Dvmwgfx_fence.c54 struct vmw_fence_obj fence; member
76 struct vmw_fence_obj *fence; member
84 fman_from_fence(struct vmw_fence_obj *fence) in fman_from_fence() argument
86 return container_of(fence->base.lock, struct vmw_fence_manager, lock); in fman_from_fence()
113 struct vmw_fence_obj *fence = in vmw_fence_obj_destroy() local
116 struct vmw_fence_manager *fman = fman_from_fence(fence); in vmw_fence_obj_destroy()
119 list_del_init(&fence->head); in vmw_fence_obj_destroy()
122 fence->destroy(fence); in vmw_fence_obj_destroy()
137 struct vmw_fence_obj *fence = in vmw_fence_enable_signaling() local
140 struct vmw_fence_manager *fman = fman_from_fence(fence); in vmw_fence_enable_signaling()
[all …]
Dvmwgfx_fence.h60 void (*destroy)(struct vmw_fence_obj *fence);
71 struct vmw_fence_obj *fence = *fence_p; in vmw_fence_obj_unreference() local
74 if (fence) in vmw_fence_obj_unreference()
75 dma_fence_put(&fence->base); in vmw_fence_obj_unreference()
79 vmw_fence_obj_reference(struct vmw_fence_obj *fence) in vmw_fence_obj_reference() argument
81 if (fence) in vmw_fence_obj_reference()
82 dma_fence_get(&fence->base); in vmw_fence_obj_reference()
83 return fence; in vmw_fence_obj_reference()
88 extern bool vmw_fence_obj_signaled(struct vmw_fence_obj *fence);
90 extern int vmw_fence_obj_wait(struct vmw_fence_obj *fence,
[all …]
/Linux-v4.19/drivers/gpu/drm/virtio/
Dvirtgpu_fence.c41 struct virtio_gpu_fence *fence = to_virtio_fence(f); in virtio_signaled() local
43 if (atomic64_read(&fence->drv->last_seq) >= fence->seq) in virtio_signaled()
50 struct virtio_gpu_fence *fence = to_virtio_fence(f); in virtio_fence_value_str() local
52 snprintf(str, size, "%llu", fence->seq); in virtio_fence_value_str()
57 struct virtio_gpu_fence *fence = to_virtio_fence(f); in virtio_timeline_value_str() local
59 snprintf(str, size, "%llu", (u64)atomic64_read(&fence->drv->last_seq)); in virtio_timeline_value_str()
72 struct virtio_gpu_fence **fence) in virtio_gpu_fence_emit() argument
77 *fence = kmalloc(sizeof(struct virtio_gpu_fence), GFP_ATOMIC); in virtio_gpu_fence_emit()
78 if ((*fence) == NULL) in virtio_gpu_fence_emit()
82 (*fence)->drv = drv; in virtio_gpu_fence_emit()
[all …]
/Linux-v4.19/drivers/gpu/drm/radeon/
Dradeon_fence.c130 struct radeon_fence **fence, in radeon_fence_emit() argument
136 *fence = kmalloc(sizeof(struct radeon_fence), GFP_KERNEL); in radeon_fence_emit()
137 if ((*fence) == NULL) { in radeon_fence_emit()
140 (*fence)->rdev = rdev; in radeon_fence_emit()
141 (*fence)->seq = seq = ++rdev->fence_drv[ring].sync_seq[ring]; in radeon_fence_emit()
142 (*fence)->ring = ring; in radeon_fence_emit()
143 (*fence)->is_vm_update = false; in radeon_fence_emit()
144 dma_fence_init(&(*fence)->base, &radeon_fence_ops, in radeon_fence_emit()
148 radeon_fence_ring_emit(rdev, ring, *fence); in radeon_fence_emit()
149 trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq); in radeon_fence_emit()
[all …]
Dradeon_sync.c64 struct radeon_fence *fence) in radeon_sync_fence() argument
68 if (!fence) in radeon_sync_fence()
71 other = sync->sync_to[fence->ring]; in radeon_sync_fence()
72 sync->sync_to[fence->ring] = radeon_fence_later(fence, other); in radeon_sync_fence()
74 if (fence->is_vm_update) { in radeon_sync_fence()
76 sync->last_vm_update = radeon_fence_later(fence, other); in radeon_sync_fence()
96 struct radeon_fence *fence; in radeon_sync_resv() local
102 fence = f ? to_radeon_fence(f) : NULL; in radeon_sync_resv()
103 if (fence && fence->rdev == rdev) in radeon_sync_resv()
104 radeon_sync_fence(sync, fence); in radeon_sync_resv()
[all …]
/Linux-v4.19/drivers/gpu/drm/i915/selftests/
Dlib_sw_fence.c30 nop_fence_notify(struct i915_sw_fence *fence, enum i915_sw_fence_notify state) in nop_fence_notify() argument
35 void __onstack_fence_init(struct i915_sw_fence *fence, in __onstack_fence_init() argument
39 debug_fence_init_onstack(fence); in __onstack_fence_init()
41 __init_waitqueue_head(&fence->wait, name, key); in __onstack_fence_init()
42 atomic_set(&fence->pending, 1); in __onstack_fence_init()
43 fence->flags = (unsigned long)nop_fence_notify; in __onstack_fence_init()
46 void onstack_fence_fini(struct i915_sw_fence *fence) in onstack_fence_fini() argument
48 i915_sw_fence_commit(fence); in onstack_fence_fini()
49 i915_sw_fence_fini(fence); in onstack_fence_fini()
56 i915_sw_fence_commit(&tf->fence); in timed_fence_wake()
[all …]
/Linux-v4.19/drivers/gpu/drm/v3d/
Dv3d_fence.c8 struct v3d_fence *fence; in v3d_fence_create() local
10 fence = kzalloc(sizeof(*fence), GFP_KERNEL); in v3d_fence_create()
11 if (!fence) in v3d_fence_create()
14 fence->dev = &v3d->drm; in v3d_fence_create()
15 fence->queue = queue; in v3d_fence_create()
16 fence->seqno = ++v3d->queue[queue].emit_seqno; in v3d_fence_create()
17 dma_fence_init(&fence->base, &v3d_fence_ops, &v3d->job_lock, in v3d_fence_create()
18 v3d->queue[queue].fence_context, fence->seqno); in v3d_fence_create()
20 return &fence->base; in v3d_fence_create()
23 static const char *v3d_fence_get_driver_name(struct dma_fence *fence) in v3d_fence_get_driver_name() argument
[all …]
/Linux-v4.19/drivers/gpu/drm/msm/
Dmsm_fence.c47 static inline bool fence_completed(struct msm_fence_context *fctx, uint32_t fence) in fence_completed() argument
49 return (int32_t)(fctx->completed_fence - fence) >= 0; in fence_completed()
53 int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence, in msm_wait_fence() argument
58 if (fence > fctx->last_fence) { in msm_wait_fence()
60 fctx->name, fence, fctx->last_fence); in msm_wait_fence()
66 ret = fence_completed(fctx, fence) ? 0 : -EBUSY; in msm_wait_fence()
72 fence_completed(fctx, fence), in msm_wait_fence()
76 fence_completed(fctx, fence), in msm_wait_fence()
81 fence, fctx->completed_fence); in msm_wait_fence()
92 void msm_update_fence(struct msm_fence_context *fctx, uint32_t fence) in msm_update_fence() argument
[all …]
/Linux-v4.19/drivers/gpu/drm/
Ddrm_syncobj.c94 struct dma_fence **fence, in drm_syncobj_fence_get_or_add_callback() argument
100 WARN_ON(*fence); in drm_syncobj_fence_get_or_add_callback()
102 *fence = drm_syncobj_fence_get(syncobj); in drm_syncobj_fence_get_or_add_callback()
103 if (*fence) in drm_syncobj_fence_get_or_add_callback()
111 if (syncobj->fence) { in drm_syncobj_fence_get_or_add_callback()
112 *fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, in drm_syncobj_fence_get_or_add_callback()
116 *fence = NULL; in drm_syncobj_fence_get_or_add_callback()
165 struct dma_fence *fence) in drm_syncobj_replace_fence() argument
170 if (fence) in drm_syncobj_replace_fence()
171 dma_fence_get(fence); in drm_syncobj_replace_fence()
[all …]
/Linux-v4.19/tools/testing/selftests/sync/
Dsync_stress_consumer.c40 static int busy_wait_on_fence(int fence) in busy_wait_on_fence() argument
45 error = sync_fence_count_with_status(fence, FENCE_STATUS_ERROR); in busy_wait_on_fence()
47 active = sync_fence_count_with_status(fence, in busy_wait_on_fence()
66 int fence, valid, i; in mpsc_producer_thread() local
72 fence = sw_sync_fence_create(consumer_timeline, "fence", i); in mpsc_producer_thread()
73 valid = sw_sync_fence_is_valid(fence); in mpsc_producer_thread()
82 ASSERT(sync_wait(fence, -1) > 0, in mpsc_producer_thread()
85 ASSERT(busy_wait_on_fence(fence) == 0, in mpsc_producer_thread()
100 sw_sync_fence_destroy(fence); in mpsc_producer_thread()
108 int fence, merged, tmp, valid, it, i; in mpcs_consumer_thread() local
[all …]

1234567891011