From: John Harrison <john.c.harri...@intel.com>

Added the '_complete' trace event which occurs when a fence/request is
signaled as complete. Also moved the notify event from the IRQ handler
code to inside the notify function itself.

v3: Added the current ring seqno to the notify trace point.

v5: Line wrapping to keep the style checker happy.

v7: Updated to newer nightly (lots of ring -> engine renaming).

v10: Dropped the 'is_empty' flag from trace_i915_gem_request_notify()
as it is now redundant - 'seqno == 0' is equivalent.
[Review comments from Tvrtko Ursulin]

v10b: Re-based due to change in previous patch.

For: VIZ-5190
Signed-off-by: John Harrison <john.c.harri...@intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c   | 9 +++++++--
 drivers/gpu/drm/i915/i915_irq.c   | 1 -
 drivers/gpu/drm/i915/i915_trace.h | 6 +++---
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 866afef..a876a65 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2969,8 +2969,10 @@ void i915_gem_request_notify(struct intel_engine_cs 
*engine, bool fence_locked,
         * not-empty. And a false not-empty is not an issue - it would just be
         * the same as not doing the early exit test at all.
         */
-       if (list_empty(&engine->fence_signal_list))
+       if (list_empty(&engine->fence_signal_list)) {
+               trace_i915_gem_request_notify(engine, 0);
                return;
+       }
 
        if (!fence_locked)
                spin_lock_irq(&engine->fence_lock);
@@ -2978,6 +2980,7 @@ void i915_gem_request_notify(struct intel_engine_cs 
*engine, bool fence_locked,
        if (!lazy_coherency && engine->irq_seqno_barrier)
                engine->irq_seqno_barrier(engine);
        seqno = engine->get_seqno(engine);
+       trace_i915_gem_request_notify(engine, seqno);
 
        list_for_each_entry_safe(req, req_next, &engine->fence_signal_list, 
signal_link) {
                if (!req->cancelled && !i915_seqno_passed(seqno, req->seqno))
@@ -2994,8 +2997,10 @@ void i915_gem_request_notify(struct intel_engine_cs 
*engine, bool fence_locked,
                        req->irq_enabled = false;
                }
 
-               if (!req->cancelled)
+               if (!req->cancelled) {
                        fence_signal_locked(&req->fence);
+                       trace_i915_gem_request_complete(req);
+               }
 
                i915_gem_request_unreference(req);
        }
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 8d1a28e..b994266 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -979,7 +979,6 @@ static void notify_ring(struct intel_engine_cs *engine)
        if (!intel_engine_initialized(engine))
                return;
 
-       trace_i915_gem_request_notify(engine);
        engine->user_interrupts++;
 
        queue_work(engine->i915->req_wq, &engine->request_work);
diff --git a/drivers/gpu/drm/i915/i915_trace.h 
b/drivers/gpu/drm/i915/i915_trace.h
index 6768db0..ef4c573 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -546,8 +546,8 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
 );
 
 TRACE_EVENT(i915_gem_request_notify,
-           TP_PROTO(struct intel_engine_cs *engine),
-           TP_ARGS(engine),
+           TP_PROTO(struct intel_engine_cs *engine, uint32_t seqno),
+           TP_ARGS(engine, seqno),
 
            TP_STRUCT__entry(
                             __field(u32, dev)
@@ -558,7 +558,7 @@ TRACE_EVENT(i915_gem_request_notify,
            TP_fast_assign(
                           __entry->dev = engine->i915->dev->primary->index;
                           __entry->ring = engine->id;
-                          __entry->seqno = engine->get_seqno(engine);
+                          __entry->seqno = seqno;
                           ),
 
            TP_printk("dev=%u, ring=%u, seqno=%u",
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to