Lines Matching refs:rq

64 #define RQ_TRACE(rq, fmt, ...) do {					\
65 const struct i915_request *rq__ = (rq); \
276 * path would be rq->hw_context->ring->timeline->hwsp_seqno.
378 void __i915_request_skip(struct i915_request *rq);
379 bool i915_request_set_error_once(struct i915_request *rq, int error);
380 struct i915_request *i915_request_mark_eio(struct i915_request *rq);
383 void __i915_request_queue(struct i915_request *rq,
385 void __i915_request_queue_bh(struct i915_request *rq);
387 bool i915_request_retire(struct i915_request *rq);
388 void i915_request_retire_upto(struct i915_request *rq);
400 i915_request_get(struct i915_request *rq)
402 return to_request(dma_fence_get(&rq->fence));
406 i915_request_get_rcu(struct i915_request *rq)
408 return to_request(dma_fence_get_rcu(&rq->fence));
412 i915_request_put(struct i915_request *rq)
414 dma_fence_put(&rq->fence);
420 int i915_request_await_dma_fence(struct i915_request *rq,
422 int i915_request_await_deps(struct i915_request *rq, const struct i915_deps *deps);
423 int i915_request_await_execution(struct i915_request *rq,
426 void i915_request_add(struct i915_request *rq);
434 void i915_request_cancel(struct i915_request *rq, int error);
436 long i915_request_wait_timeout(struct i915_request *rq,
441 long i915_request_wait(struct i915_request *rq,
450 const struct i915_request *rq,
454 static inline bool i915_request_signaled(const struct i915_request *rq)
457 return test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &rq->fence.flags);
460 static inline bool i915_request_is_active(const struct i915_request *rq)
462 return test_bit(I915_FENCE_FLAG_ACTIVE, &rq->fence.flags);
465 static inline bool i915_request_in_priority_queue(const struct i915_request *rq)
467 return test_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
471 i915_request_has_initial_breadcrumb(const struct i915_request *rq)
473 return test_bit(I915_FENCE_FLAG_INITIAL_BREADCRUMB, &rq->fence.flags);
484 static inline u32 __hwsp_seqno(const struct i915_request *rq)
486 const u32 *hwsp = READ_ONCE(rq->hwsp_seqno);
493 * @rq: the request, to chase the relevant HW status page
501 * has the associated breadcrumb value of rq->fence.seqno, when the HW
504 static inline u32 hwsp_seqno(const struct i915_request *rq)
509 seqno = __hwsp_seqno(rq);
515 static inline bool __i915_request_has_started(const struct i915_request *rq)
517 return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno - 1);
522 * @rq: the request
546 static inline bool i915_request_started(const struct i915_request *rq)
550 if (i915_request_signaled(rq))
555 if (likely(!i915_request_signaled(rq)))
557 result = __i915_request_has_started(rq);
565 * @rq: the request
571 static inline bool i915_request_is_running(const struct i915_request *rq)
575 if (!i915_request_is_active(rq))
579 result = __i915_request_has_started(rq) && i915_request_is_active(rq);
587 * @rq: the request
601 static inline bool i915_request_is_ready(const struct i915_request *rq)
603 return !list_empty(&rq->sched.link);
606 static inline bool __i915_request_is_complete(const struct i915_request *rq)
608 return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno);
611 static inline bool i915_request_completed(const struct i915_request *rq)
615 if (i915_request_signaled(rq))
620 if (likely(!i915_request_signaled(rq)))
621 result = __i915_request_is_complete(rq);
627 static inline void i915_request_mark_complete(struct i915_request *rq)
629 WRITE_ONCE(rq->hwsp_seqno, /* decouple from HWSP */
630 (u32 *)&rq->fence.seqno);
633 static inline bool i915_request_has_waitboost(const struct i915_request *rq)
635 return test_bit(I915_FENCE_FLAG_BOOST, &rq->fence.flags);
638 static inline bool i915_request_has_nopreempt(const struct i915_request *rq)
641 return unlikely(test_bit(I915_FENCE_FLAG_NOPREEMPT, &rq->fence.flags));
644 static inline bool i915_request_has_sentinel(const struct i915_request *rq)
646 return unlikely(test_bit(I915_FENCE_FLAG_SENTINEL, &rq->fence.flags));
649 static inline bool i915_request_on_hold(const struct i915_request *rq)
651 return unlikely(test_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags));
654 static inline void i915_request_set_hold(struct i915_request *rq)
656 set_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
659 static inline void i915_request_clear_hold(struct i915_request *rq)
661 clear_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
665 i915_request_timeline(const struct i915_request *rq)
668 return rcu_dereference_protected(rq->timeline,
669 lockdep_is_held(&rcu_access_pointer(rq->timeline)->mutex) ||
670 test_bit(CONTEXT_IS_PARKING, &rq->context->flags));
674 i915_request_gem_context(const struct i915_request *rq)
677 return rcu_dereference_protected(rq->context->gem_context, true);
681 i915_request_active_timeline(const struct i915_request *rq)
688 return rcu_dereference_protected(rq->timeline,
689 lockdep_is_held(&rq->engine->sched_engine->lock));
693 i915_request_active_seqno(const struct i915_request *rq)
696 page_mask_bits(i915_request_active_timeline(rq)->hwsp_offset);
697 u32 hwsp_relative_offset = offset_in_page(rq->hwsp_seqno);
703 * and combine them with the relative offset in rq->hwsp_seqno.
714 i915_request_active_engine(struct i915_request *rq,
717 void i915_request_notify_execute_cb_imm(struct i915_request *rq);
727 enum i915_request_state i915_test_request_state(struct i915_request *rq);