Lines Matching full:active
63 * and may be associated with active buffers to be retired.
163 * active reference - all objects on this list must also be
351 * can then perform any action, such as delayed freeing of an active
370 * @active - the active tracker
374 * init_request_active() prepares the embedded @active struct for use as
375 * an activity tracker, that is for tracking the last known active request
380 init_request_active(struct i915_gem_active *active, in init_request_active() argument
383 RCU_INIT_POINTER(active->request, NULL); in init_request_active()
384 INIT_LIST_HEAD(&active->link); in init_request_active()
385 active->retire = retire ?: i915_gem_retire_noop; in init_request_active()
390 * @active - the active tracker
394 * that @request is busy, the @active reports busy. When that @request is
395 * retired, the @active tracker is updated to report idle.
398 i915_gem_active_set(struct i915_gem_active *active, in i915_gem_active_set() argument
401 list_move(&active->link, &request->active_list); in i915_gem_active_set()
402 rcu_assign_pointer(active->request, request); in i915_gem_active_set()
407 * @active - the active tracker
412 * is called when the final request associated with the @active tracker
416 i915_gem_active_set_retire_fn(struct i915_gem_active *active, in i915_gem_active_set_retire_fn() argument
421 active->retire = fn ?: i915_gem_retire_noop; in i915_gem_active_set_retire_fn()
425 __i915_gem_active_peek(const struct i915_gem_active *active) in __i915_gem_active_peek() argument
434 return rcu_dereference_protected(active->request, 1); in __i915_gem_active_peek()
438 * i915_gem_active_raw - return the active request
439 * @active - the active tracker
446 i915_gem_active_raw(const struct i915_gem_active *active, struct mutex *mutex) in i915_gem_active_raw() argument
448 return rcu_dereference_protected(active->request, in i915_gem_active_raw()
453 * i915_gem_active_peek - report the active request being monitored
454 * @active - the active tracker
457 * still active, or NULL. It does not obtain a reference on the request
461 i915_gem_active_peek(const struct i915_gem_active *active, struct mutex *mutex) in i915_gem_active_peek() argument
465 request = i915_gem_active_raw(active, mutex); in i915_gem_active_peek()
473 * i915_gem_active_get - return a reference to the active request
474 * @active - the active tracker
476 * i915_gem_active_get() returns a reference to the active request, or NULL
477 * if the active tracker is idle. The caller must hold struct_mutex.
480 i915_gem_active_get(const struct i915_gem_active *active, struct mutex *mutex) in i915_gem_active_get() argument
482 return i915_request_get(i915_gem_active_peek(active, mutex)); in i915_gem_active_get()
486 * __i915_gem_active_get_rcu - return a reference to the active request
487 * @active - the active tracker
489 * __i915_gem_active_get() returns a reference to the active request, or NULL
490 * if the active tracker is idle. The caller must hold the RCU read lock, but
494 __i915_gem_active_get_rcu(const struct i915_gem_active *active) in __i915_gem_active_get_rcu() argument
497 * Performing a lockless retrieval of the active request is super in __i915_gem_active_get_rcu()
505 * rq = active.request in __i915_gem_active_get_rcu()
508 * active.request = NULL in __i915_gem_active_get_rcu()
519 * check that our request remains the active request across in __i915_gem_active_get_rcu()
526 * before the active tracker is updated. Querying whether the in __i915_gem_active_get_rcu()
532 * reallocated, that means the active tracker's request was complete. in __i915_gem_active_get_rcu()
534 * just report the active tracker is idle. If the new request is in __i915_gem_active_get_rcu()
536 * it remained the active request. in __i915_gem_active_get_rcu()
545 request = rcu_dereference(active->request); in __i915_gem_active_get_rcu()
569 * the request, we may not notice a change in the active in __i915_gem_active_get_rcu()
592 if (!request || request == rcu_access_pointer(active->request)) in __i915_gem_active_get_rcu()
600 * i915_gem_active_get_unlocked - return a reference to the active request
601 * @active - the active tracker
603 * i915_gem_active_get_unlocked() returns a reference to the active request,
604 * or NULL if the active tracker is idle. The reference is obtained under RCU,
610 i915_gem_active_get_unlocked(const struct i915_gem_active *active) in i915_gem_active_get_unlocked() argument
615 request = __i915_gem_active_get_rcu(active); in i915_gem_active_get_unlocked()
622 * i915_gem_active_isset - report whether the active tracker is assigned
623 * @active - the active tracker
625 * i915_gem_active_isset() returns true if the active tracker is currently
630 i915_gem_active_isset(const struct i915_gem_active *active) in i915_gem_active_isset() argument
632 return rcu_access_pointer(active->request); in i915_gem_active_isset()
637 * @active - the active request on which to wait
646 * This function relies on RCU in order to acquire the reference to the active
658 i915_gem_active_wait(const struct i915_gem_active *active, unsigned int flags) in i915_gem_active_wait() argument
663 request = i915_gem_active_get_unlocked(active); in i915_gem_active_wait()
674 * @active - the active request on which to wait
678 * @active tracker is called before returning. If the @active
682 i915_gem_active_retire(struct i915_gem_active *active, in i915_gem_active_retire() argument
688 request = i915_gem_active_raw(active, mutex); in i915_gem_active_retire()
698 list_del_init(&active->link); in i915_gem_active_retire()
699 RCU_INIT_POINTER(active->request, NULL); in i915_gem_active_retire()
701 active->retire(active, request); in i915_gem_active_retire()