Commit 2956e970 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin

drm/i915/trace: Describe engines as class:instance pairs

Instead of using the engine->id, use uabi_class:instance pairs in trace-
points including engine info.

This will be more readable, more future proof and more stable for
userspace consumption.

v2:
 * Use u16 for class and instance. (Chris Wilson)
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: svetlana.kukanova@intel.com
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180525082642.18246-1-tvrtko.ursulin@linux.intel.com
parent 420980ca
...@@ -591,21 +591,26 @@ TRACE_EVENT(i915_gem_ring_sync_to, ...@@ -591,21 +591,26 @@ TRACE_EVENT(i915_gem_ring_sync_to,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, sync_from) __field(u32, from_class)
__field(u32, sync_to) __field(u32, from_instance)
__field(u32, to_class)
__field(u32, to_instance)
__field(u32, seqno) __field(u32, seqno)
), ),
TP_fast_assign( TP_fast_assign(
__entry->dev = from->i915->drm.primary->index; __entry->dev = from->i915->drm.primary->index;
__entry->sync_from = from->engine->id; __entry->from_class = from->engine->uabi_class;
__entry->sync_to = to->engine->id; __entry->from_instance = from->engine->instance;
__entry->to_class = to->engine->uabi_class;
__entry->to_instance = to->engine->instance;
__entry->seqno = from->global_seqno; __entry->seqno = from->global_seqno;
), ),
TP_printk("dev=%u, sync-from=%u, sync-to=%u, seqno=%u", TP_printk("dev=%u, sync-from=%u:%u, sync-to=%u:%u, seqno=%u",
__entry->dev, __entry->dev,
__entry->sync_from, __entry->sync_to, __entry->from_class, __entry->from_instance,
__entry->to_class, __entry->to_instance,
__entry->seqno) __entry->seqno)
); );
...@@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue, ...@@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, hw_id) __field(u32, hw_id)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, ctx) __field(u32, ctx)
__field(u32, seqno) __field(u32, seqno)
__field(u32, flags) __field(u32, flags)
...@@ -625,15 +631,17 @@ TRACE_EVENT(i915_request_queue, ...@@ -625,15 +631,17 @@ TRACE_EVENT(i915_request_queue,
TP_fast_assign( TP_fast_assign(
__entry->dev = rq->i915->drm.primary->index; __entry->dev = rq->i915->drm.primary->index;
__entry->hw_id = rq->gem_context->hw_id; __entry->hw_id = rq->gem_context->hw_id;
__entry->ring = rq->engine->id; __entry->class = rq->engine->uabi_class;
__entry->instance = rq->engine->instance;
__entry->ctx = rq->fence.context; __entry->ctx = rq->fence.context;
__entry->seqno = rq->fence.seqno; __entry->seqno = rq->fence.seqno;
__entry->flags = flags; __entry->flags = flags;
), ),
TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, flags=0x%x", TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, flags=0x%x",
__entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, __entry->dev, __entry->hw_id, __entry->class,
__entry->seqno, __entry->flags) __entry->instance, __entry->ctx, __entry->seqno,
__entry->flags)
); );
DECLARE_EVENT_CLASS(i915_request, DECLARE_EVENT_CLASS(i915_request,
...@@ -643,7 +651,8 @@ DECLARE_EVENT_CLASS(i915_request, ...@@ -643,7 +651,8 @@ DECLARE_EVENT_CLASS(i915_request,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, hw_id) __field(u32, hw_id)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, ctx) __field(u32, ctx)
__field(u32, seqno) __field(u32, seqno)
__field(u32, global) __field(u32, global)
...@@ -652,15 +661,17 @@ DECLARE_EVENT_CLASS(i915_request, ...@@ -652,15 +661,17 @@ DECLARE_EVENT_CLASS(i915_request,
TP_fast_assign( TP_fast_assign(
__entry->dev = rq->i915->drm.primary->index; __entry->dev = rq->i915->drm.primary->index;
__entry->hw_id = rq->gem_context->hw_id; __entry->hw_id = rq->gem_context->hw_id;
__entry->ring = rq->engine->id; __entry->class = rq->engine->uabi_class;
__entry->instance = rq->engine->instance;
__entry->ctx = rq->fence.context; __entry->ctx = rq->fence.context;
__entry->seqno = rq->fence.seqno; __entry->seqno = rq->fence.seqno;
__entry->global = rq->global_seqno; __entry->global = rq->global_seqno;
), ),
TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u", TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u",
__entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, __entry->dev, __entry->hw_id, __entry->class,
__entry->seqno, __entry->global) __entry->instance, __entry->ctx, __entry->seqno,
__entry->global)
); );
DEFINE_EVENT(i915_request, i915_request_add, DEFINE_EVENT(i915_request, i915_request_add,
...@@ -686,7 +697,8 @@ TRACE_EVENT(i915_request_in, ...@@ -686,7 +697,8 @@ TRACE_EVENT(i915_request_in,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, hw_id) __field(u32, hw_id)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, ctx) __field(u32, ctx)
__field(u32, seqno) __field(u32, seqno)
__field(u32, global_seqno) __field(u32, global_seqno)
...@@ -697,7 +709,8 @@ TRACE_EVENT(i915_request_in, ...@@ -697,7 +709,8 @@ TRACE_EVENT(i915_request_in,
TP_fast_assign( TP_fast_assign(
__entry->dev = rq->i915->drm.primary->index; __entry->dev = rq->i915->drm.primary->index;
__entry->hw_id = rq->gem_context->hw_id; __entry->hw_id = rq->gem_context->hw_id;
__entry->ring = rq->engine->id; __entry->class = rq->engine->uabi_class;
__entry->instance = rq->engine->instance;
__entry->ctx = rq->fence.context; __entry->ctx = rq->fence.context;
__entry->seqno = rq->fence.seqno; __entry->seqno = rq->fence.seqno;
__entry->global_seqno = rq->global_seqno; __entry->global_seqno = rq->global_seqno;
...@@ -705,10 +718,10 @@ TRACE_EVENT(i915_request_in, ...@@ -705,10 +718,10 @@ TRACE_EVENT(i915_request_in,
__entry->port = port; __entry->port = port;
), ),
TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, prio=%u, global=%u, port=%u", TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, prio=%u, global=%u, port=%u",
__entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, __entry->dev, __entry->hw_id, __entry->class,
__entry->seqno, __entry->prio, __entry->global_seqno, __entry->instance, __entry->ctx, __entry->seqno,
__entry->port) __entry->prio, __entry->global_seqno, __entry->port)
); );
TRACE_EVENT(i915_request_out, TRACE_EVENT(i915_request_out,
...@@ -718,7 +731,8 @@ TRACE_EVENT(i915_request_out, ...@@ -718,7 +731,8 @@ TRACE_EVENT(i915_request_out,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, hw_id) __field(u32, hw_id)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, ctx) __field(u32, ctx)
__field(u32, seqno) __field(u32, seqno)
__field(u32, global_seqno) __field(u32, global_seqno)
...@@ -728,16 +742,17 @@ TRACE_EVENT(i915_request_out, ...@@ -728,16 +742,17 @@ TRACE_EVENT(i915_request_out,
TP_fast_assign( TP_fast_assign(
__entry->dev = rq->i915->drm.primary->index; __entry->dev = rq->i915->drm.primary->index;
__entry->hw_id = rq->gem_context->hw_id; __entry->hw_id = rq->gem_context->hw_id;
__entry->ring = rq->engine->id; __entry->class = rq->engine->uabi_class;
__entry->instance = rq->engine->instance;
__entry->ctx = rq->fence.context; __entry->ctx = rq->fence.context;
__entry->seqno = rq->fence.seqno; __entry->seqno = rq->fence.seqno;
__entry->global_seqno = rq->global_seqno; __entry->global_seqno = rq->global_seqno;
__entry->completed = i915_request_completed(rq); __entry->completed = i915_request_completed(rq);
), ),
TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, completed?=%u", TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u, completed?=%u",
__entry->dev, __entry->hw_id, __entry->ring, __entry->dev, __entry->hw_id, __entry->class,
__entry->ctx, __entry->seqno, __entry->instance, __entry->ctx, __entry->seqno,
__entry->global_seqno, __entry->completed) __entry->global_seqno, __entry->completed)
); );
...@@ -771,21 +786,23 @@ TRACE_EVENT(intel_engine_notify, ...@@ -771,21 +786,23 @@ TRACE_EVENT(intel_engine_notify,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, seqno) __field(u32, seqno)
__field(bool, waiters) __field(bool, waiters)
), ),
TP_fast_assign( TP_fast_assign(
__entry->dev = engine->i915->drm.primary->index; __entry->dev = engine->i915->drm.primary->index;
__entry->ring = engine->id; __entry->class = engine->uabi_class;
__entry->instance = engine->instance;
__entry->seqno = intel_engine_get_seqno(engine); __entry->seqno = intel_engine_get_seqno(engine);
__entry->waiters = waiters; __entry->waiters = waiters;
), ),
TP_printk("dev=%u, ring=%u, seqno=%u, waiters=%u", TP_printk("dev=%u, engine=%u:%u, seqno=%u, waiters=%u",
__entry->dev, __entry->ring, __entry->seqno, __entry->dev, __entry->class, __entry->instance,
__entry->waiters) __entry->seqno, __entry->waiters)
); );
DEFINE_EVENT(i915_request, i915_request_retire, DEFINE_EVENT(i915_request, i915_request_retire,
...@@ -800,7 +817,8 @@ TRACE_EVENT(i915_request_wait_begin, ...@@ -800,7 +817,8 @@ TRACE_EVENT(i915_request_wait_begin,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, dev) __field(u32, dev)
__field(u32, hw_id) __field(u32, hw_id)
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(u32, ctx) __field(u32, ctx)
__field(u32, seqno) __field(u32, seqno)
__field(u32, global) __field(u32, global)
...@@ -816,17 +834,19 @@ TRACE_EVENT(i915_request_wait_begin, ...@@ -816,17 +834,19 @@ TRACE_EVENT(i915_request_wait_begin,
TP_fast_assign( TP_fast_assign(
__entry->dev = rq->i915->drm.primary->index; __entry->dev = rq->i915->drm.primary->index;
__entry->hw_id = rq->gem_context->hw_id; __entry->hw_id = rq->gem_context->hw_id;
__entry->ring = rq->engine->id; __entry->class = rq->engine->uabi_class;
__entry->instance = rq->engine->instance;
__entry->ctx = rq->fence.context; __entry->ctx = rq->fence.context;
__entry->seqno = rq->fence.seqno; __entry->seqno = rq->fence.seqno;
__entry->global = rq->global_seqno; __entry->global = rq->global_seqno;
__entry->flags = flags; __entry->flags = flags;
), ),
TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, blocking=%u, flags=0x%x", TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u, blocking=%u, flags=0x%x",
__entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, __entry->dev, __entry->hw_id, __entry->class,
__entry->seqno, __entry->global, __entry->instance, __entry->ctx, __entry->seqno,
!!(__entry->flags & I915_WAIT_LOCKED), __entry->flags) __entry->global, !!(__entry->flags & I915_WAIT_LOCKED),
__entry->flags)
); );
DEFINE_EVENT(i915_request, i915_request_wait_end, DEFINE_EVENT(i915_request, i915_request_wait_end,
...@@ -966,21 +986,24 @@ TRACE_EVENT(switch_mm, ...@@ -966,21 +986,24 @@ TRACE_EVENT(switch_mm,
TP_ARGS(engine, to), TP_ARGS(engine, to),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, ring) __field(u16, class)
__field(u16, instance)
__field(struct i915_gem_context *, to) __field(struct i915_gem_context *, to)
__field(struct i915_address_space *, vm) __field(struct i915_address_space *, vm)
__field(u32, dev) __field(u32, dev)
), ),
TP_fast_assign( TP_fast_assign(
__entry->ring = engine->id; __entry->class = engine->uabi_class;
__entry->instance = engine->instance;
__entry->to = to; __entry->to = to;
__entry->vm = to->ppgtt? &to->ppgtt->base : NULL; __entry->vm = to->ppgtt? &to->ppgtt->base : NULL;
__entry->dev = engine->i915->drm.primary->index; __entry->dev = engine->i915->drm.primary->index;
), ),
TP_printk("dev=%u, ring=%u, ctx=%p, ctx_vm=%p", TP_printk("dev=%u, engine=%u:%u, ctx=%p, ctx_vm=%p",
__entry->dev, __entry->ring, __entry->to, __entry->vm) __entry->dev, __entry->class, __entry->instance, __entry->to,
__entry->vm)
); );
#endif /* _I915_TRACE_H_ */ #endif /* _I915_TRACE_H_ */
......
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