Lines Matching defs:active

22  * they idle (when we know the active requests are inactive) and allocate the
40 node_from_active(struct i915_active_fence *active)
42 return container_of(active, struct active_node, base);
47 static inline bool is_barrier(const struct i915_active_fence *active)
49 return IS_ERR(rcu_access_pointer(active->fence));
83 return (void *)ref->active ?: (void *)ref->retire ?: (void *)ref;
210 __active_fence_slot(struct i915_active_fence *active)
212 return (struct dma_fence ** __force)&active->fence;
218 struct i915_active_fence *active =
219 container_of(cb, typeof(*active), cb);
221 return cmpxchg(__active_fence_slot(active), fence, NULL) == fence;
277 /* While active, the tree can only be built; not destroyed */
347 int (*active)(struct i915_active *ref),
357 ref->active = active;
425 replace_barrier(struct i915_active *ref, struct i915_active_fence *active)
427 if (!is_barrier(active)) /* proto-node used by our idle barrier? */
435 __active_del_barrier(ref, node_from_active(active));
441 struct i915_active_fence *active;
449 active = active_instance(ref, idx);
450 if (!active) {
455 if (replace_barrier(ref, active)) {
456 RCU_INIT_POINTER(active->fence, NULL);
459 if (!__i915_active_fence_set(active, fence))
469 struct i915_active_fence *active,
474 if (replace_barrier(ref, active)) {
475 RCU_INIT_POINTER(active->fence, fence);
480 prev = __i915_active_fence_set(active, fence);
509 /* Only valid while active, see i915_active_acquire_for_context() */
541 if (!ref->active) {
551 err = ref->active(ref);
563 struct i915_active_fence *active;
570 active = active_instance(ref, idx);
571 if (!active) {
576 return 0; /* return with active ref */
585 static void enable_signaling(struct i915_active_fence *active)
589 if (unlikely(is_barrier(active)))
592 fence = i915_active_fence_get(active);
656 static int __await_active(struct i915_active_fence *active,
662 if (is_barrier(active)) /* XXX flush the barrier? */
665 fence = i915_active_fence_get(active);
814 * i915_active, due to overlapping active phases there is likely a
1044 * __i915_active_fence_set: Update the last active fence along its timeline
1045 * @active: the active tracker
1048 * Records the new @fence as the last active fence along its timeline in
1049 * this active tracker, moving the tracking callbacks from the previous
1056 __i915_active_fence_set(struct i915_active_fence *active,
1062 if (fence == rcu_access_pointer(active->fence))
1069 * C already resident as the active->fence.
1088 prev = xchg(__active_fence_slot(active), fence);
1092 __list_del_entry(&active->cb.node);
1095 list_add_tail(&active->cb.node, &fence->cb_list);
1101 int i915_active_fence_set(struct i915_active_fence *active,
1107 /* Must maintain timeline ordering wrt previous active requests */
1109 fence = __i915_active_fence_set(active, &rq->fence);