Lines Matching refs:rq
53 #define RQ_TRACE(rq, fmt, ...) do { \
54 const struct i915_request *rq__ = (rq); \
235 * path would be rq->hw_context->ring->timeline->hwsp_seqno.
311 void i915_request_set_error_once(struct i915_request *rq, int error);
312 void __i915_request_skip(struct i915_request *rq);
315 void __i915_request_queue(struct i915_request *rq,
318 bool i915_request_retire(struct i915_request *rq);
319 void i915_request_retire_upto(struct i915_request *rq);
331 i915_request_get(struct i915_request *rq)
333 return to_request(dma_fence_get(&rq->fence));
337 i915_request_get_rcu(struct i915_request *rq)
339 return to_request(dma_fence_get_rcu(&rq->fence));
343 i915_request_put(struct i915_request *rq)
345 dma_fence_put(&rq->fence);
351 int i915_request_await_dma_fence(struct i915_request *rq,
353 int i915_request_await_execution(struct i915_request *rq,
355 void (*hook)(struct i915_request *rq,
358 void i915_request_add(struct i915_request *rq);
366 long i915_request_wait(struct i915_request *rq,
374 static inline bool i915_request_signaled(const struct i915_request *rq)
377 return test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &rq->fence.flags);
380 static inline bool i915_request_is_active(const struct i915_request *rq)
382 return test_bit(I915_FENCE_FLAG_ACTIVE, &rq->fence.flags);
385 static inline bool i915_request_in_priority_queue(const struct i915_request *rq)
387 return test_bit(I915_FENCE_FLAG_PQUEUE, &rq->fence.flags);
391 i915_request_has_initial_breadcrumb(const struct i915_request *rq)
393 return test_bit(I915_FENCE_FLAG_INITIAL_BREADCRUMB, &rq->fence.flags);
404 static inline u32 __hwsp_seqno(const struct i915_request *rq)
406 const u32 *hwsp = READ_ONCE(rq->hwsp_seqno);
413 * @rq: the request, to chase the relevant HW status page
421 * has the associated breadcrumb value of rq->fence.seqno, when the HW
424 static inline u32 hwsp_seqno(const struct i915_request *rq)
429 seqno = __hwsp_seqno(rq);
435 static inline bool __i915_request_has_started(const struct i915_request *rq)
437 return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno - 1);
442 * @rq: the request
466 static inline bool i915_request_started(const struct i915_request *rq)
470 if (i915_request_signaled(rq))
475 if (likely(!i915_request_signaled(rq)))
477 result = __i915_request_has_started(rq);
485 * @rq: the request
491 static inline bool i915_request_is_running(const struct i915_request *rq)
495 if (!i915_request_is_active(rq))
499 result = __i915_request_has_started(rq) && i915_request_is_active(rq);
507 * @rq: the request
521 static inline bool i915_request_is_ready(const struct i915_request *rq)
523 return !list_empty(&rq->sched.link);
526 static inline bool __i915_request_is_complete(const struct i915_request *rq)
528 return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno);
531 static inline bool i915_request_completed(const struct i915_request *rq)
535 if (i915_request_signaled(rq))
540 if (likely(!i915_request_signaled(rq)))
541 result = __i915_request_is_complete(rq);
547 static inline void i915_request_mark_complete(struct i915_request *rq)
549 WRITE_ONCE(rq->hwsp_seqno, /* decouple from HWSP */
550 (u32 *)&rq->fence.seqno);
553 static inline bool i915_request_has_waitboost(const struct i915_request *rq)
555 return test_bit(I915_FENCE_FLAG_BOOST, &rq->fence.flags);
558 static inline bool i915_request_has_nopreempt(const struct i915_request *rq)
561 return unlikely(test_bit(I915_FENCE_FLAG_NOPREEMPT, &rq->fence.flags));
564 static inline bool i915_request_has_sentinel(const struct i915_request *rq)
566 return unlikely(test_bit(I915_FENCE_FLAG_SENTINEL, &rq->fence.flags));
569 static inline bool i915_request_on_hold(const struct i915_request *rq)
571 return unlikely(test_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags));
574 static inline void i915_request_set_hold(struct i915_request *rq)
576 set_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
579 static inline void i915_request_clear_hold(struct i915_request *rq)
581 clear_bit(I915_FENCE_FLAG_HOLD, &rq->fence.flags);
585 i915_request_timeline(const struct i915_request *rq)
588 return rcu_dereference_protected(rq->timeline,
589 lockdep_is_held(&rcu_access_pointer(rq->timeline)->mutex));
593 i915_request_gem_context(const struct i915_request *rq)
596 return rcu_dereference_protected(rq->context->gem_context, true);
600 i915_request_active_timeline(const struct i915_request *rq)
607 return rcu_dereference_protected(rq->timeline,
608 lockdep_is_held(&rq->engine->active.lock));