Lines Matching full:active

23 static void __live_get(struct live_active *active)  in __live_get()  argument
25 kref_get(&active->ref); in __live_get()
28 static void __live_free(struct live_active *active) in __live_free() argument
30 i915_active_fini(&active->base); in __live_free()
31 kfree(active); in __live_free()
36 struct live_active *active = container_of(ref, typeof(*active), ref); in __live_release() local
38 __live_free(active); in __live_release()
41 static void __live_put(struct live_active *active) in __live_put() argument
43 kref_put(&active->ref, __live_release); in __live_put()
48 struct live_active *active = container_of(base, typeof(*active), base); in __live_active() local
50 __live_get(active); in __live_active()
56 struct live_active *active = container_of(base, typeof(*active), base); in __live_retire() local
58 active->retired = true; in __live_retire()
59 __live_put(active); in __live_retire()
64 struct live_active *active; in __live_alloc() local
66 active = kzalloc(sizeof(*active), GFP_KERNEL); in __live_alloc()
67 if (!active) in __live_alloc()
70 kref_init(&active->ref); in __live_alloc()
71 i915_active_init(&active->base, __live_active, __live_retire); in __live_alloc()
73 return active; in __live_alloc()
81 struct live_active *active; in __live_active_setup() local
85 active = __live_alloc(i915); in __live_active_setup()
86 if (!active) in __live_active_setup()
91 kfree(active); in __live_active_setup()
95 err = i915_active_acquire(&active->base); in __live_active_setup()
112 err = i915_active_add_request(&active->base, rq); in __live_active_setup()
115 pr_err("Failed to track active ref!\n"); in __live_active_setup()
122 i915_active_release(&active->base); in __live_active_setup()
123 if (READ_ONCE(active->retired) && count) { in __live_active_setup()
127 if (atomic_read(&active->base.count) != count) { in __live_active_setup()
129 atomic_read(&active->base.count), count); in __live_active_setup()
137 __live_put(active); in __live_active_setup()
138 active = ERR_PTR(err); in __live_active_setup()
141 return active; in __live_active_setup()
147 struct live_active *active; in live_active_wait() local
152 active = __live_active_setup(i915); in live_active_wait()
153 if (IS_ERR(active)) in live_active_wait()
154 return PTR_ERR(active); in live_active_wait()
156 __i915_active_wait(&active->base, TASK_UNINTERRUPTIBLE); in live_active_wait()
157 if (!READ_ONCE(active->retired)) { in live_active_wait()
161 i915_active_print(&active->base, &p); in live_active_wait()
166 __live_put(active); in live_active_wait()
177 struct live_active *active; in live_active_retire() local
182 active = __live_active_setup(i915); in live_active_retire()
183 if (IS_ERR(active)) in live_active_retire()
184 return PTR_ERR(active); in live_active_retire()
190 if (!READ_ONCE(active->retired)) { in live_active_retire()
194 i915_active_print(&active->base, &p); in live_active_retire()
199 __live_put(active); in live_active_retire()
208 struct live_active *active; in live_active_barrier() local
213 active = __live_alloc(i915); in live_active_barrier()
214 if (!active) in live_active_barrier()
217 err = i915_active_acquire(&active->base); in live_active_barrier()
222 err = i915_active_acquire_preallocate_barrier(&active->base, in live_active_barrier()
227 i915_active_acquire_barrier(&active->base); in live_active_barrier()
230 i915_active_release(&active->base); in live_active_barrier()
234 __i915_active_wait(&active->base, TASK_UNINTERRUPTIBLE); in live_active_barrier()
235 if (!READ_ONCE(active->retired)) { in live_active_barrier()
241 __live_put(active); in live_active_barrier()
280 drm_printf(m, "active %ps:%ps\n", ref->active, ref->retire); in i915_active_print()
315 struct i915_active_fence *active) in active_flush() argument
319 fence = xchg(__active_fence_slot(active), NULL); in active_flush()
324 __list_del_entry(&active->cb.node); in active_flush()
336 /* Wait for all active callbacks */ in i915_active_unlock_wait()