drm/i915: Include the HW breadcrumb whenever we trace the global_seqno
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 27 Mar 2018 21:01:57 +0000 (22:01 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 29 Mar 2018 11:20:41 +0000 (12:20 +0100)
When we include a request's global_seqno in a GEM_TRACE it often helps
to know how that relates to the current breadcrumb as seen by the
hardware.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180327210157.16896-3-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
drivers/gpu/drm/i915/i915_request.c
drivers/gpu/drm/i915/intel_lrc.c

index 2314a26cd7f8f3a347d50a2cd152efd2f987b69b..585242831974d02665a6a7797cdb91ba07aed3ba 100644 (file)
@@ -214,8 +214,11 @@ static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno)
                struct i915_gem_timeline *timeline;
                struct intel_timeline *tl = engine->timeline;
 
-               GEM_TRACE("%s seqno %d -> %d\n",
-                         engine->name, tl->seqno, seqno);
+               GEM_TRACE("%s seqno %d (current %d) -> %d\n",
+                         engine->name,
+                         tl->seqno,
+                         intel_engine_get_seqno(engine),
+                         seqno);
 
                if (!i915_seqno_passed(seqno, tl->seqno)) {
                        /* Flush any waiters before we reuse the seqno */
@@ -386,10 +389,11 @@ static void i915_request_retire(struct i915_request *request)
        struct intel_engine_cs *engine = request->engine;
        struct i915_gem_active *active, *next;
 
-       GEM_TRACE("%s(%d) fence %llx:%d, global_seqno %d\n",
-                 engine->name, intel_engine_get_seqno(engine),
+       GEM_TRACE("%s fence %llx:%d, global_seqno %d, current %d\n",
+                 engine->name,
                  request->fence.context, request->fence.seqno,
-                 request->global_seqno);
+                 request->global_seqno,
+                 intel_engine_get_seqno(engine));
 
        lockdep_assert_held(&request->i915->drm.struct_mutex);
        GEM_BUG_ON(!i915_sw_fence_signaled(&request->submit));
@@ -508,10 +512,11 @@ void __i915_request_submit(struct i915_request *request)
        struct intel_engine_cs *engine = request->engine;
        u32 seqno;
 
-       GEM_TRACE("%s fence %llx:%d -> global_seqno %d\n",
-                 request->engine->name,
+       GEM_TRACE("%s fence %llx:%d -> global_seqno %d, current %d\n",
+                 engine->name,
                  request->fence.context, request->fence.seqno,
-                 engine->timeline->seqno + 1);
+                 engine->timeline->seqno + 1,
+                 intel_engine_get_seqno(engine));
 
        GEM_BUG_ON(!irqs_disabled());
        lockdep_assert_held(&engine->timeline->lock);
@@ -557,10 +562,11 @@ void __i915_request_unsubmit(struct i915_request *request)
 {
        struct intel_engine_cs *engine = request->engine;
 
-       GEM_TRACE("%s fence %llx:%d <- global_seqno %d\n",
-                 request->engine->name,
+       GEM_TRACE("%s fence %llx:%d <- global_seqno %d, current %d\n",
+                 engine->name,
                  request->fence.context, request->fence.seqno,
-                 request->global_seqno);
+                 request->global_seqno,
+                 intel_engine_get_seqno(engine));
 
        GEM_BUG_ON(!irqs_disabled());
        lockdep_assert_held(&engine->timeline->lock);
index 654634254b6488a3ffd8253c98813e68033688db..f60b61bf8b3bb9ec4e41f350ae1c8cf8e631063f 100644 (file)
@@ -454,10 +454,11 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
                        desc = execlists_update_context(rq);
                        GEM_DEBUG_EXEC(port[n].context_id = upper_32_bits(desc));
 
-                       GEM_TRACE("%s in[%d]:  ctx=%d.%d, seqno=%x, prio=%d\n",
+                       GEM_TRACE("%s in[%d]:  ctx=%d.%d, seqno=%d (current %d), prio=%d\n",
                                  engine->name, n,
                                  port[n].context_id, count,
                                  rq->global_seqno,
+                                 intel_engine_get_seqno(engine),
                                  rq_prio(rq));
                } else {
                        GEM_BUG_ON(!n);
@@ -999,10 +1000,11 @@ static void execlists_submission_tasklet(unsigned long data)
                                                        EXECLISTS_ACTIVE_USER));
 
                        rq = port_unpack(port, &count);
-                       GEM_TRACE("%s out[0]: ctx=%d.%d, seqno=%x, prio=%d\n",
+                       GEM_TRACE("%s out[0]: ctx=%d.%d, seqno=%d (current %d), prio=%d\n",
                                  engine->name,
                                  port->context_id, count,
                                  rq ? rq->global_seqno : 0,
+                                 intel_engine_get_seqno(engine),
                                  rq ? rq_prio(rq) : 0);
 
                        /* Check the context/desc id for this event matches */