Commit bcfcc8ba authored by John Harrison's avatar John Harrison Committed by Daniel Vetter

drm/i915: Additional request structure tracing

Added the request structure's 'uniq' identifier to the trace information. Also
renamed the '_complete' trace event to '_notify' as it actually happens in the
IRQ 'notify_ring()' function. The intention is to add a new '_complete' trace
event which occurs when a request structure is actually marked as complete.
However, at the moment the completion status is re-tested every time the query
is made so there isn't a completion event as such.

v2: New patch added to series.

v3: Rebased to remove completion caching as that is apparently contentious.

Change-Id: Ic9bcde67d175c6c03b96217cdcb6e4cc4aa45d67
For: VIZ-4377
Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Reviewed-by: default avatarThomas Daniel <Thomas.Daniel@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 67e2937b
...@@ -1013,7 +1013,7 @@ static void notify_ring(struct drm_device *dev, ...@@ -1013,7 +1013,7 @@ static void notify_ring(struct drm_device *dev,
if (!intel_ring_initialized(ring)) if (!intel_ring_initialized(ring))
return; return;
trace_i915_gem_request_complete(ring); trace_i915_gem_request_notify(ring);
wake_up_all(&ring->irq_queue); wake_up_all(&ring->irq_queue);
} }
......
...@@ -406,6 +406,7 @@ DECLARE_EVENT_CLASS(i915_gem_request, ...@@ -406,6 +406,7 @@ DECLARE_EVENT_CLASS(i915_gem_request,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, ring) __field(u32, ring)
__field(u32, uniq)
__field(u32, seqno) __field(u32, seqno)
), ),
...@@ -414,11 +415,13 @@ DECLARE_EVENT_CLASS(i915_gem_request, ...@@ -414,11 +415,13 @@ DECLARE_EVENT_CLASS(i915_gem_request,
i915_gem_request_get_ring(req); i915_gem_request_get_ring(req);
__entry->dev = ring->dev->primary->index; __entry->dev = ring->dev->primary->index;
__entry->ring = ring->id; __entry->ring = ring->id;
__entry->uniq = req ? req->uniq : 0;
__entry->seqno = i915_gem_request_get_seqno(req); __entry->seqno = i915_gem_request_get_seqno(req);
), ),
TP_printk("dev=%u, ring=%u, seqno=%u", TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u",
__entry->dev, __entry->ring, __entry->seqno) __entry->dev, __entry->ring, __entry->uniq,
__entry->seqno)
); );
DEFINE_EVENT(i915_gem_request, i915_gem_request_add, DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
...@@ -426,7 +429,7 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_add, ...@@ -426,7 +429,7 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
TP_ARGS(req) TP_ARGS(req)
); );
TRACE_EVENT(i915_gem_request_complete, TRACE_EVENT(i915_gem_request_notify,
TP_PROTO(struct intel_engine_cs *ring), TP_PROTO(struct intel_engine_cs *ring),
TP_ARGS(ring), TP_ARGS(ring),
...@@ -451,6 +454,11 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_retire, ...@@ -451,6 +454,11 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
TP_ARGS(req) TP_ARGS(req)
); );
DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
TP_PROTO(struct drm_i915_gem_request *req),
TP_ARGS(req)
);
TRACE_EVENT(i915_gem_request_wait_begin, TRACE_EVENT(i915_gem_request_wait_begin,
TP_PROTO(struct drm_i915_gem_request *req), TP_PROTO(struct drm_i915_gem_request *req),
TP_ARGS(req), TP_ARGS(req),
...@@ -458,6 +466,7 @@ TRACE_EVENT(i915_gem_request_wait_begin, ...@@ -458,6 +466,7 @@ TRACE_EVENT(i915_gem_request_wait_begin,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, ring) __field(u32, ring)
__field(u32, uniq)
__field(u32, seqno) __field(u32, seqno)
__field(bool, blocking) __field(bool, blocking)
), ),
...@@ -473,14 +482,15 @@ TRACE_EVENT(i915_gem_request_wait_begin, ...@@ -473,14 +482,15 @@ TRACE_EVENT(i915_gem_request_wait_begin,
i915_gem_request_get_ring(req); i915_gem_request_get_ring(req);
__entry->dev = ring->dev->primary->index; __entry->dev = ring->dev->primary->index;
__entry->ring = ring->id; __entry->ring = ring->id;
__entry->uniq = req ? req->uniq : 0;
__entry->seqno = i915_gem_request_get_seqno(req); __entry->seqno = i915_gem_request_get_seqno(req);
__entry->blocking = __entry->blocking =
mutex_is_locked(&ring->dev->struct_mutex); mutex_is_locked(&ring->dev->struct_mutex);
), ),
TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u, blocking=%s",
__entry->dev, __entry->ring, __entry->seqno, __entry->dev, __entry->ring, __entry->uniq,
__entry->blocking ? "yes (NB)" : "no") __entry->seqno, __entry->blocking ? "yes (NB)" : "no")
); );
DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end, DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment