[PATCH 21/22] prev-rq

Chris Wilson chris at chris-wilson.co.uk
Wed May 23 21:37:38 UTC 2018


---
 drivers/gpu/drm/i915/i915_request.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index f187250e60c6..818ea3574759 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -694,12 +694,6 @@ i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx)
 	if (ret)
 		goto err_unreserve;
 
-	/* Move our oldest request to the slab-cache (if not in use!) */
-	rq = list_first_entry(&ce->ring->request_list, typeof(*rq), ring_link);
-	if (!list_is_last(&rq->ring_link, &ce->ring->request_list) &&
-	    i915_request_completed(rq))
-		i915_request_retire(rq);
-
 	/*
 	 * Beware: Dragons be flying overhead.
 	 *
@@ -1138,8 +1132,11 @@ void __i915_request_add(struct i915_request *request, bool flush_caches)
 	 * work on behalf of others -- but instead we should benefit from
 	 * improved resource management. (Well, that's the theory at least.)
 	 */
-	if (prev && i915_request_completed(prev))
-		i915_request_retire_upto(prev);
+
+	/* Move our oldest request to the slab-cache (if not in use!) */
+	prev = list_first_entry(&ring->request_list, typeof(*prev), ring_link);
+	if (prev != request && i915_request_completed(prev))
+		i915_request_retire(prev);
 }
 
 static unsigned long local_clock_us(unsigned int *cpu)
-- 
2.17.0



More information about the Intel-gfx-trybot mailing list