[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