• Home
  • Raw
  • Download

Lines Matching refs:active

36 node_from_active(struct i915_active_fence *active)  in node_from_active()  argument
38 return container_of(active, struct active_node, base); in node_from_active()
43 static inline bool is_barrier(const struct i915_active_fence *active) in is_barrier() argument
45 return IS_ERR(rcu_access_pointer(active->fence)); in is_barrier()
79 return (void *)ref->active ?: (void *)ref->retire ?: (void *)ref; in active_debug_hint()
204 __active_fence_slot(struct i915_active_fence *active) in __active_fence_slot() argument
206 return (struct dma_fence ** __force)&active->fence; in __active_fence_slot()
212 struct i915_active_fence *active = in active_fence_cb() local
213 container_of(cb, typeof(*active), cb); in active_fence_cb()
215 return cmpxchg(__active_fence_slot(active), fence, NULL) == fence; in active_fence_cb()
339 int (*active)(struct i915_active *ref), in __i915_active_init()
348 ref->active = active; in __i915_active_init()
414 replace_barrier(struct i915_active *ref, struct i915_active_fence *active) in replace_barrier() argument
416 if (!is_barrier(active)) /* proto-node used by our idle barrier? */ in replace_barrier()
424 return __active_del_barrier(ref, node_from_active(active)); in replace_barrier()
429 struct i915_active_fence *active; in i915_active_ref() local
438 active = active_instance(ref, idx); in i915_active_ref()
439 if (!active) { in i915_active_ref()
444 if (replace_barrier(ref, active)) { in i915_active_ref()
445 RCU_INIT_POINTER(active->fence, NULL); in i915_active_ref()
448 } while (unlikely(is_barrier(active))); in i915_active_ref()
450 fence = __i915_active_fence_set(active, fence); in i915_active_ref()
463 struct i915_active_fence *active, in __i915_active_set_fence() argument
468 if (replace_barrier(ref, active)) { in __i915_active_set_fence()
469 RCU_INIT_POINTER(active->fence, fence); in __i915_active_set_fence()
473 prev = __i915_active_fence_set(active, fence); in __i915_active_set_fence()
531 if (!ref->active) { in i915_active_acquire()
541 err = ref->active(ref); in i915_active_acquire()
553 struct i915_active_fence *active; in i915_active_acquire_for_context() local
560 active = active_instance(ref, idx); in i915_active_acquire_for_context()
561 if (!active) { in i915_active_acquire_for_context()
575 static void enable_signaling(struct i915_active_fence *active) in enable_signaling() argument
579 if (unlikely(is_barrier(active))) in enable_signaling()
582 fence = i915_active_fence_get(active); in enable_signaling()
648 static int __await_active(struct i915_active_fence *active, in __await_active() argument
654 if (is_barrier(active)) /* XXX flush the barrier? */ in __await_active()
657 fence = i915_active_fence_get(active); in __await_active()
1049 __i915_active_fence_set(struct i915_active_fence *active, in __i915_active_fence_set() argument
1070 prev = i915_active_fence_get(active); in __i915_active_fence_set()
1102 while (cmpxchg(__active_fence_slot(active), prev, fence) != prev) { in __i915_active_fence_set()
1109 prev = i915_active_fence_get(active); in __i915_active_fence_set()
1130 __list_del_entry(&active->cb.node); in __i915_active_fence_set()
1133 list_add_tail(&active->cb.node, &fence->cb_list); in __i915_active_fence_set()
1139 int i915_active_fence_set(struct i915_active_fence *active, in i915_active_fence_set() argument
1146 fence = __i915_active_fence_set(active, &rq->fence); in i915_active_fence_set()