mirror of https://gitee.com/openkylin/linux.git
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: John Harrison <John.C.Harrison@Intel.com> Reviewed-by: Thomas Daniel <Thomas.Daniel@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
67e2937bf4
commit
bcfcc8ba29
|
@ -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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
|
|
Loading…
Reference in New Issue