[PATCH 9/9] retire trace

Tvrtko Ursulin tursulin at ursulin.net
Tue Sep 4 17:01:09 UTC 2018


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 drivers/gpu/drm/i915/i915_gem_context.c |  9 +++++-
 drivers/gpu/drm/i915/i915_request.c     |  8 +++--
 drivers/gpu/drm/i915/i915_request.h     |  3 ++
 drivers/gpu/drm/i915/intel_lrc.c        | 40 ++++++++++++-------------
 4 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index b1e0c008bfa0..31cf5b07f287 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -943,10 +943,17 @@ gen8_modify_rpcs_gpu(struct intel_context *ce,
 	/* Queue this switch after all other activity by this context. */
 	prev = i915_gem_active_raw(&ce->ring->timeline->last_request,
 				   &i915->drm.struct_mutex);
-	if (prev)
+	if (prev && !i915_request_completed(prev)) {
+		GEM_TRACE("rpcs rq=%llx:%u (%px), prev=%llx:%u\n",
+			  rq->fence.context, rq->fence.seqno, rq,
+			  prev->fence.context, prev->fence.seqno);
 		i915_sw_fence_await_sw_fence_gfp(&rq->submit,
 						 &prev->submit,
 						 I915_FENCE_GFP);
+	} else {
+		GEM_TRACE("rpcs rq=%llx:%u (%px)\n",
+			  rq->fence.context, rq->fence.seqno, rq);
+	}
 
 	/* Order all following requests to be after. */
 	i915_timeline_set_barrier(ce->ring->timeline, rq);
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 245f43f3bcc1..ea512aecd09a 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -410,8 +410,8 @@ static void i915_request_retire(struct i915_request *request)
 {
 	struct i915_gem_active *active, *next;
 
-	GEM_TRACE("%s fence %llx:%d, global=%d, current %d\n",
-		  request->engine->name,
+	GEM_TRACE("%s rq %px, fence %llx:%d, global=%d, current %d\n",
+		  request->engine->name, request,
 		  request->fence.context, request->fence.seqno,
 		  request->global_seqno,
 		  intel_engine_get_seqno(request->engine));
@@ -446,6 +446,10 @@ static void i915_request_retire(struct i915_request *request)
 		 * also prefetch the next i915_gem_active to try and hide
 		 * the likely cache miss.
 		 */
+		GEM_TRACE("retire rq %px %llx:%u ||| active=%px [entry|prev/next=%px|%px/%px]\n",
+			  request, request->fence.context, request->fence.seqno,
+			  active, &active->link, active->link.prev, active->link.next);
+
 		prefetchw(next);
 
 		INIT_LIST_HEAD(&active->link);
diff --git a/drivers/gpu/drm/i915/i915_request.h b/drivers/gpu/drm/i915/i915_request.h
index eb6f8cce16c4..5cda0ed364f6 100644
--- a/drivers/gpu/drm/i915/i915_request.h
+++ b/drivers/gpu/drm/i915/i915_request.h
@@ -419,6 +419,9 @@ static inline void
 i915_gem_active_set(struct i915_gem_active *active,
 		    struct i915_request *request)
 {
+	GEM_TRACE("set active=%px (entry %px, prev/next=%px-%px) -> rq %llx:%u (%px)\n",
+		  active, &active->link, active->link.prev, active->link.next,
+		  request->fence.context, request->fence.seqno, request);
 	list_move(&active->link, &request->active_list);
 	rcu_assign_pointer(active->request, request);
 }
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index e798d0b08053..e148cba83a56 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -912,7 +912,7 @@ static void process_csb(struct intel_engine_cs *engine)
 	 */
 	head = execlists->csb_head;
 	tail = READ_ONCE(*execlists->csb_write);
-	GEM_TRACE("%s cs-irq head=%d, tail=%d\n", engine->name, head, tail);
+// 	GEM_TRACE("%s cs-irq head=%d, tail=%d\n", engine->name, head, tail);
 	if (unlikely(head == tail))
 		return;
 
@@ -952,10 +952,10 @@ static void process_csb(struct intel_engine_cs *engine)
 		 * status notifier.
 		 */
 
-		GEM_TRACE("%s csb[%d]: status=0x%08x:0x%08x, active=0x%x\n",
-			  engine->name, head,
-			  buf[2 * head + 0], buf[2 * head + 1],
-			  execlists->active);
+// 		GEM_TRACE("%s csb[%d]: status=0x%08x:0x%08x, active=0x%x\n",
+// 			  engine->name, head,
+// 			  buf[2 * head + 0], buf[2 * head + 1],
+// 			  execlists->active);
 
 		status = buf[2 * head];
 		if (status & (GEN8_CTX_STATUS_IDLE_ACTIVE |
@@ -974,7 +974,7 @@ static void process_csb(struct intel_engine_cs *engine)
 
 		if (status & GEN8_CTX_STATUS_COMPLETE &&
 		    buf[2*head + 1] == execlists->preempt_complete_status) {
-			GEM_TRACE("%s preempt-idle\n", engine->name);
+// 			GEM_TRACE("%s preempt-idle\n", engine->name);
 			complete_preempt_context(execlists);
 			continue;
 		}
@@ -988,14 +988,14 @@ static void process_csb(struct intel_engine_cs *engine)
 						EXECLISTS_ACTIVE_USER));
 
 		rq = port_unpack(port, &count);
-		GEM_TRACE("%s out[0]: ctx=%d.%d, global=%d (fence %llx:%d) (current %d), prio=%d\n",
-			  engine->name,
-			  port->context_id, count,
-			  rq ? rq->global_seqno : 0,
-			  rq ? rq->fence.context : 0,
-			  rq ? rq->fence.seqno : 0,
-			  intel_engine_get_seqno(engine),
-			  rq ? rq_prio(rq) : 0);
+// 		GEM_TRACE("%s out[0]: ctx=%d.%d, global=%d (fence %llx:%d) (current %d), prio=%d\n",
+// 			  engine->name,
+// 			  port->context_id, count,
+// 			  rq ? rq->global_seqno : 0,
+// 			  rq ? rq->fence.context : 0,
+// 			  rq ? rq->fence.seqno : 0,
+// 			  intel_engine_get_seqno(engine),
+// 			  rq ? rq_prio(rq) : 0);
 
 		/* Check the context/desc id for this event matches */
 		GEM_DEBUG_BUG_ON(buf[2 * head + 1] != port->context_id);
@@ -1028,8 +1028,8 @@ static void process_csb(struct intel_engine_cs *engine)
 						       INTEL_CONTEXT_SCHEDULE_OUT);
 			i915_request_put(rq);
 
-			GEM_TRACE("%s completed ctx=%d\n",
-				  engine->name, port->context_id);
+// 			GEM_TRACE("%s completed ctx=%d\n",
+// 				  engine->name, port->context_id);
 
 			port = execlists_port_complete(execlists, port);
 			if (port_isset(port))
@@ -1062,10 +1062,10 @@ static void execlists_submission_tasklet(unsigned long data)
 	struct intel_engine_cs * const engine = (struct intel_engine_cs *)data;
 	unsigned long flags;
 
-	GEM_TRACE("%s awake?=%d, active=%x\n",
-		  engine->name,
-		  engine->i915->gt.awake,
-		  engine->execlists.active);
+// 	GEM_TRACE("%s awake?=%d, active=%x\n",
+// 		  engine->name,
+// 		  engine->i915->gt.awake,
+// 		  engine->execlists.active);
 
 	spin_lock_irqsave(&engine->timeline.lock, flags);
 	__execlists_submission_tasklet(engine);
-- 
2.17.1



More information about the Intel-gfx-trybot mailing list