Lines Matching refs:rq
54 #define RQ_TRACE(rq, fmt, ...) do { \
55 const struct i915_request *rq__ = (rq); \
234 * path would be rq->hw_context->ring->timeline->hwsp_seqno.
313 void __i915_request_queue(struct i915_request *rq,
316 bool i915_request_retire(struct i915_request *rq);
317 void i915_request_retire_upto(struct i915_request *rq);
329 i915_request_get(struct i915_request *rq)
331 return to_request(dma_fence_get(&rq->fence));
335 i915_request_get_rcu(struct i915_request *rq)
337 return to_request(dma_fence_get_rcu(&rq->fence));
341 i915_request_put(struct i915_request *rq)
343 dma_fence_put(&rq->fence);
349 int i915_request_await_dma_fence(struct i915_request *rq,
351 int i915_request_await_execution(struct i915_request *rq,
353 void (*hook)(struct i915_request *rq,
356 void i915_request_add(struct i915_request *rq);
370 long i915_request_wait(struct i915_request *rq,
378 static inline bool i915_request_signaled(const struct i915_request *rq)
381 return test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &rq->fence.flags);
384 static inline bool i915_request_is_active(const struct i915_request *rq)
386 return test_bit(I915_FENCE_FLAG_ACTIVE, &rq->fence.flags);
389 static inline bool i915_request_in_priority_queue(const struct i915_request *rq)
391 return test_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
402 static inline u32 __hwsp_seqno(const struct i915_request *rq)
404 return READ_ONCE(*rq->hwsp_seqno);
409 * @rq: the request, to chase the relevant HW status page
417 * has the associated breadcrumb value of rq->fence.seqno, when the HW
420 static inline u32 hwsp_seqno(const struct i915_request *rq)
425 seqno = __hwsp_seqno(rq);
431 static inline bool __i915_request_has_started(const struct i915_request *rq)
433 return i915_seqno_passed(hwsp_seqno(rq), rq->fence.seqno - 1);
438 * @rq: the request
462 static inline bool i915_request_started(const struct i915_request *rq)
464 if (i915_request_signaled(rq))
468 return __i915_request_has_started(rq);
473 * @rq: the request
479 static inline bool i915_request_is_running(const struct i915_request *rq)
481 if (!i915_request_is_active(rq))
484 return __i915_request_has_started(rq);
489 * @rq: the request
503 static inline bool i915_request_is_ready(const struct i915_request *rq)
505 return !list_empty(&rq->sched.link);
508 static inline bool i915_request_completed(const struct i915_request *rq)
510 if (i915_request_signaled(rq))
513 return i915_seqno_passed(hwsp_seqno(rq), rq->fence.seqno);
516 static inline void i915_request_mark_complete(struct i915_request *rq)
518 rq->hwsp_seqno = (u32 *)&rq->fence.seqno; /* decouple from HWSP */
521 static inline bool i915_request_has_waitboost(const struct i915_request *rq)
523 return test_bit(I915_FENCE_FLAG_BOOST, &rq->fence.flags);
526 static inline bool i915_request_has_nopreempt(const struct i915_request *rq)
529 return unlikely(test_bit(I915_FENCE_FLAG_NOPREEMPT, &rq->fence.flags));
532 static inline bool i915_request_has_sentinel(const struct i915_request *rq)
534 return unlikely(test_bit(I915_FENCE_FLAG_SENTINEL, &rq->fence.flags));
537 static inline bool i915_request_on_hold(const struct i915_request *rq)
539 return unlikely(test_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags));
542 static inline void i915_request_set_hold(struct i915_request *rq)
544 set_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
547 static inline void i915_request_clear_hold(struct i915_request *rq)
549 clear_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
553 i915_request_timeline(struct i915_request *rq)
556 return rcu_dereference_protected(rq->timeline,
557 lockdep_is_held(&rcu_access_pointer(rq->timeline)->mutex));
561 i915_request_gem_context(struct i915_request *rq)
564 return rcu_dereference_protected(rq->context->gem_context, true);
568 i915_request_active_timeline(struct i915_request *rq)
575 return rcu_dereference_protected(rq->timeline,
576 lockdep_is_held(&rq->engine->active.lock));