Message ID | 20180524150447.16927-1-tvrtko.ursulin@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Quoting Tvrtko Ursulin (2018-05-24 16:04:46) > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Instead of using the engine->id, use uabi_class:instance pairs in trace- > points including engine info. Should we not pack dev,hw_id,class,instance into u16s? > This will be more readable, more future proof and more stable for > userspace consumption. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Cc: svetlana.kukanova@intel.com > --- > @@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) ctx needs u64 :( I've no objection to switching to our hopefully futureproof uabi nomenclature. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On 24/05/2018 16:29, Chris Wilson wrote: > Quoting Tvrtko Ursulin (2018-05-24 16:04:46) >> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> >> Instead of using the engine->id, use uabi_class:instance pairs in trace- >> points including engine info. > > Should we not pack dev,hw_id,class,instance into u16s? Can do. >> This will be more readable, more future proof and more stable for >> userspace consumption. >> >> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> Cc: Chris Wilson <chris@chris-wilson.co.uk> >> Cc: svetlana.kukanova@intel.com >> --- >> @@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue, >> TP_STRUCT__entry( >> __field(u32, dev) >> __field(u32, hw_id) >> - __field(u32, ring) >> + __field(u32, class) >> + __field(u32, instance) >> __field(u32, ctx) > > ctx needs u64 :( > I've no objection to switching to our hopefully futureproof uabi > nomenclature. > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Thanks, I'll grow the series with all of the above. Regards, Tvrtko
On 24/05/18 16:04, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > 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. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Cc: svetlana.kukanova@intel.com Don't you want engine->uabi_id instead of engine->instance ? > --- > drivers/gpu/drm/i915/i915_trace.h | 107 ++++++++++++++++++------------ > 1 file changed, 65 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h > index 5d4f78765083..3465cc1f9345 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -591,21 +591,26 @@ TRACE_EVENT(i915_gem_ring_sync_to, > > TP_STRUCT__entry( > __field(u32, dev) > - __field(u32, sync_from) > - __field(u32, sync_to) > + __field(u32, from_class) > + __field(u32, from_instance) > + __field(u32, to_class) > + __field(u32, to_instance) > __field(u32, seqno) > ), > > TP_fast_assign( > __entry->dev = from->i915->drm.primary->index; > - __entry->sync_from = from->engine->id; > - __entry->sync_to = to->engine->id; > + __entry->from_class = from->engine->uabi_class; > + __entry->from_instance = from->engine->instance; > + __entry->to_class = to->engine->uabi_class; > + __entry->to_instance = to->engine->instance; > __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->sync_from, __entry->sync_to, > + __entry->from_class, __entry->from_instance, > + __entry->to_class, __entry->to_instance, > __entry->seqno) > ); > > @@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) > __field(u32, seqno) > __field(u32, flags) > @@ -625,15 +631,17 @@ TRACE_EVENT(i915_request_queue, > TP_fast_assign( > __entry->dev = rq->i915->drm.primary->index; > __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->seqno = rq->fence.seqno; > __entry->flags = flags; > ), > > - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, flags=0x%x", > - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, > - __entry->seqno, __entry->flags) > + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, flags=0x%x", > + __entry->dev, __entry->hw_id, __entry->class, > + __entry->instance, __entry->ctx, __entry->seqno, > + __entry->flags) > ); > > DECLARE_EVENT_CLASS(i915_request, > @@ -643,7 +651,8 @@ DECLARE_EVENT_CLASS(i915_request, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) > __field(u32, seqno) > __field(u32, global) > @@ -652,15 +661,17 @@ DECLARE_EVENT_CLASS(i915_request, > TP_fast_assign( > __entry->dev = rq->i915->drm.primary->index; > __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->seqno = rq->fence.seqno; > __entry->global = rq->global_seqno; > ), > > - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u", > - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, > - __entry->seqno, __entry->global) > + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u", > + __entry->dev, __entry->hw_id, __entry->class, > + __entry->instance, __entry->ctx, __entry->seqno, > + __entry->global) > ); > > DEFINE_EVENT(i915_request, i915_request_add, > @@ -686,7 +697,8 @@ TRACE_EVENT(i915_request_in, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) > __field(u32, seqno) > __field(u32, global_seqno) > @@ -697,7 +709,8 @@ TRACE_EVENT(i915_request_in, > TP_fast_assign( > __entry->dev = rq->i915->drm.primary->index; > __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->seqno = rq->fence.seqno; > __entry->global_seqno = rq->global_seqno; > @@ -705,10 +718,10 @@ TRACE_EVENT(i915_request_in, > __entry->port = port; > ), > > - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, prio=%u, global=%u, port=%u", > - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, > - __entry->seqno, __entry->prio, __entry->global_seqno, > - __entry->port) > + 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->class, > + __entry->instance, __entry->ctx, __entry->seqno, > + __entry->prio, __entry->global_seqno, __entry->port) > ); > > TRACE_EVENT(i915_request_out, > @@ -718,7 +731,8 @@ TRACE_EVENT(i915_request_out, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) > __field(u32, seqno) > __field(u32, global_seqno) > @@ -728,16 +742,17 @@ TRACE_EVENT(i915_request_out, > TP_fast_assign( > __entry->dev = rq->i915->drm.primary->index; > __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->seqno = rq->fence.seqno; > __entry->global_seqno = rq->global_seqno; > __entry->completed = i915_request_completed(rq); > ), > > - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, completed?=%u", > - __entry->dev, __entry->hw_id, __entry->ring, > - __entry->ctx, __entry->seqno, > + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u, completed?=%u", > + __entry->dev, __entry->hw_id, __entry->class, > + __entry->instance, __entry->ctx, __entry->seqno, > __entry->global_seqno, __entry->completed) > ); > > @@ -771,21 +786,23 @@ TRACE_EVENT(intel_engine_notify, > > TP_STRUCT__entry( > __field(u32, dev) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, seqno) > __field(bool, waiters) > ), > > TP_fast_assign( > __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->waiters = waiters; > ), > > - TP_printk("dev=%u, ring=%u, seqno=%u, waiters=%u", > - __entry->dev, __entry->ring, __entry->seqno, > - __entry->waiters) > + TP_printk("dev=%u, engine=%u:%u, seqno=%u, waiters=%u", > + __entry->dev, __entry->class, __entry->instance, > + __entry->seqno, __entry->waiters) > ); > > DEFINE_EVENT(i915_request, i915_request_retire, > @@ -800,7 +817,8 @@ TRACE_EVENT(i915_request_wait_begin, > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, hw_id) > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(u32, ctx) > __field(u32, seqno) > __field(u32, global) > @@ -816,17 +834,19 @@ TRACE_EVENT(i915_request_wait_begin, > TP_fast_assign( > __entry->dev = rq->i915->drm.primary->index; > __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->seqno = rq->fence.seqno; > __entry->global = rq->global_seqno; > __entry->flags = flags; > ), > > - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, blocking=%u, flags=0x%x", > - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, > - __entry->seqno, __entry->global, > - !!(__entry->flags & I915_WAIT_LOCKED), __entry->flags) > + 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->class, > + __entry->instance, __entry->ctx, __entry->seqno, > + __entry->global, !!(__entry->flags & I915_WAIT_LOCKED), > + __entry->flags) > ); > > DEFINE_EVENT(i915_request, i915_request_wait_end, > @@ -966,21 +986,24 @@ TRACE_EVENT(switch_mm, > TP_ARGS(engine, to), > > TP_STRUCT__entry( > - __field(u32, ring) > + __field(u32, class) > + __field(u32, instance) > __field(struct i915_gem_context *, to) > __field(struct i915_address_space *, vm) > __field(u32, dev) > ), > > TP_fast_assign( > - __entry->ring = engine->id; > + __entry->class = engine->uabi_class; > + __entry->instance = engine->instance; > __entry->to = to; > __entry->vm = to->ppgtt? &to->ppgtt->base : NULL; > __entry->dev = engine->i915->drm.primary->index; > ), > > - TP_printk("dev=%u, ring=%u, ctx=%p, ctx_vm=%p", > - __entry->dev, __entry->ring, __entry->to, __entry->vm) > + TP_printk("dev=%u, engine=%u:%u, ctx=%p, ctx_vm=%p", > + __entry->dev, __entry->class, __entry->instance, __entry->to, > + __entry->vm) > ); > > #endif /* _I915_TRACE_H_ */
On 24/05/2018 16:53, Lionel Landwerlin wrote: > On 24/05/18 16:04, Tvrtko Ursulin wrote: >> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> >> 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. >> >> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> Cc: Chris Wilson <chris@chris-wilson.co.uk> >> Cc: svetlana.kukanova@intel.com > Don't you want engine->uabi_id instead of engine->instance ? No, class:instance is the new engine identifier - why do you think we would need legacy engine->uabi_id? Regards, Tvrtko
On 24/05/18 17:07, Tvrtko Ursulin wrote: > > On 24/05/2018 16:53, Lionel Landwerlin wrote: >> On 24/05/18 16:04, Tvrtko Ursulin wrote: >>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >>> >>> 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. >>> >>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >>> Cc: Chris Wilson <chris@chris-wilson.co.uk> >>> Cc: svetlana.kukanova@intel.com >> Don't you want engine->uabi_id instead of engine->instance ? > > No, class:instance is the new engine identifier - why do you think we > would need legacy engine->uabi_id? Maybe I forgot about your engine listing series... I would expect the tracepoint to match the engines listed through that uapi. - Lionel > > Regards, > > Tvrtko >
On 24/05/2018 17:13, Lionel Landwerlin wrote: > On 24/05/18 17:07, Tvrtko Ursulin wrote: >> >> On 24/05/2018 16:53, Lionel Landwerlin wrote: >>> On 24/05/18 16:04, Tvrtko Ursulin wrote: >>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >>>> >>>> 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. >>>> >>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >>>> Cc: Chris Wilson <chris@chris-wilson.co.uk> >>>> Cc: svetlana.kukanova@intel.com >>> Don't you want engine->uabi_id instead of engine->instance ? >> >> No, class:instance is the new engine identifier - why do you think we >> would need legacy engine->uabi_id? > > Maybe I forgot about your engine listing series... > I would expect the tracepoint to match the engines listed through that > uapi. Yeah I don't have engine->uabi_id exported in engine discovery. I could add it, but given how we don't plan to extend it (the legacy engine selection), I think it is not needed. If there will be popular demand though can do it. Regards, Tvrtko
Quoting Tvrtko Ursulin (2018-05-25 08:11:41) > > On 24/05/2018 17:13, Lionel Landwerlin wrote: > > On 24/05/18 17:07, Tvrtko Ursulin wrote: > >> > >> On 24/05/2018 16:53, Lionel Landwerlin wrote: > >>> On 24/05/18 16:04, Tvrtko Ursulin wrote: > >>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > >>>> > >>>> 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. > >>>> > >>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > >>>> Cc: Chris Wilson <chris@chris-wilson.co.uk> > >>>> Cc: svetlana.kukanova@intel.com > >>> Don't you want engine->uabi_id instead of engine->instance ? > >> > >> No, class:instance is the new engine identifier - why do you think we > >> would need legacy engine->uabi_id? > > > > Maybe I forgot about your engine listing series... > > I would expect the tracepoint to match the engines listed through that > > uapi. > > Yeah I don't have engine->uabi_id exported in engine discovery. I could > add it, but given how we don't plan to extend it (the legacy engine > selection), I think it is not needed. If there will be popular demand > though can do it. Also that we plan to conflate the I915_EXEC_RING selector so that engine->uabi_id would no longer be a unique mapping, will add to the confusion. -Chris
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h index 5d4f78765083..3465cc1f9345 100644 --- a/drivers/gpu/drm/i915/i915_trace.h +++ b/drivers/gpu/drm/i915/i915_trace.h @@ -591,21 +591,26 @@ TRACE_EVENT(i915_gem_ring_sync_to, TP_STRUCT__entry( __field(u32, dev) - __field(u32, sync_from) - __field(u32, sync_to) + __field(u32, from_class) + __field(u32, from_instance) + __field(u32, to_class) + __field(u32, to_instance) __field(u32, seqno) ), TP_fast_assign( __entry->dev = from->i915->drm.primary->index; - __entry->sync_from = from->engine->id; - __entry->sync_to = to->engine->id; + __entry->from_class = from->engine->uabi_class; + __entry->from_instance = from->engine->instance; + __entry->to_class = to->engine->uabi_class; + __entry->to_instance = to->engine->instance; __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->sync_from, __entry->sync_to, + __entry->from_class, __entry->from_instance, + __entry->to_class, __entry->to_instance, __entry->seqno) ); @@ -616,7 +621,8 @@ TRACE_EVENT(i915_request_queue, TP_STRUCT__entry( __field(u32, dev) __field(u32, hw_id) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, ctx) __field(u32, seqno) __field(u32, flags) @@ -625,15 +631,17 @@ TRACE_EVENT(i915_request_queue, TP_fast_assign( __entry->dev = rq->i915->drm.primary->index; __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->seqno = rq->fence.seqno; __entry->flags = flags; ), - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, flags=0x%x", - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, - __entry->seqno, __entry->flags) + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, flags=0x%x", + __entry->dev, __entry->hw_id, __entry->class, + __entry->instance, __entry->ctx, __entry->seqno, + __entry->flags) ); DECLARE_EVENT_CLASS(i915_request, @@ -643,7 +651,8 @@ DECLARE_EVENT_CLASS(i915_request, TP_STRUCT__entry( __field(u32, dev) __field(u32, hw_id) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, ctx) __field(u32, seqno) __field(u32, global) @@ -652,15 +661,17 @@ DECLARE_EVENT_CLASS(i915_request, TP_fast_assign( __entry->dev = rq->i915->drm.primary->index; __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->seqno = rq->fence.seqno; __entry->global = rq->global_seqno; ), - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u", - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, - __entry->seqno, __entry->global) + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u", + __entry->dev, __entry->hw_id, __entry->class, + __entry->instance, __entry->ctx, __entry->seqno, + __entry->global) ); DEFINE_EVENT(i915_request, i915_request_add, @@ -686,7 +697,8 @@ TRACE_EVENT(i915_request_in, TP_STRUCT__entry( __field(u32, dev) __field(u32, hw_id) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, ctx) __field(u32, seqno) __field(u32, global_seqno) @@ -697,7 +709,8 @@ TRACE_EVENT(i915_request_in, TP_fast_assign( __entry->dev = rq->i915->drm.primary->index; __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->seqno = rq->fence.seqno; __entry->global_seqno = rq->global_seqno; @@ -705,10 +718,10 @@ TRACE_EVENT(i915_request_in, __entry->port = port; ), - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, prio=%u, global=%u, port=%u", - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, - __entry->seqno, __entry->prio, __entry->global_seqno, - __entry->port) + 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->class, + __entry->instance, __entry->ctx, __entry->seqno, + __entry->prio, __entry->global_seqno, __entry->port) ); TRACE_EVENT(i915_request_out, @@ -718,7 +731,8 @@ TRACE_EVENT(i915_request_out, TP_STRUCT__entry( __field(u32, dev) __field(u32, hw_id) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, ctx) __field(u32, seqno) __field(u32, global_seqno) @@ -728,16 +742,17 @@ TRACE_EVENT(i915_request_out, TP_fast_assign( __entry->dev = rq->i915->drm.primary->index; __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->seqno = rq->fence.seqno; __entry->global_seqno = rq->global_seqno; __entry->completed = i915_request_completed(rq); ), - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, completed?=%u", - __entry->dev, __entry->hw_id, __entry->ring, - __entry->ctx, __entry->seqno, + TP_printk("dev=%u, hw_id=%u, engine=%u:%u, ctx=%u, seqno=%u, global=%u, completed?=%u", + __entry->dev, __entry->hw_id, __entry->class, + __entry->instance, __entry->ctx, __entry->seqno, __entry->global_seqno, __entry->completed) ); @@ -771,21 +786,23 @@ TRACE_EVENT(intel_engine_notify, TP_STRUCT__entry( __field(u32, dev) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, seqno) __field(bool, waiters) ), TP_fast_assign( __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->waiters = waiters; ), - TP_printk("dev=%u, ring=%u, seqno=%u, waiters=%u", - __entry->dev, __entry->ring, __entry->seqno, - __entry->waiters) + TP_printk("dev=%u, engine=%u:%u, seqno=%u, waiters=%u", + __entry->dev, __entry->class, __entry->instance, + __entry->seqno, __entry->waiters) ); DEFINE_EVENT(i915_request, i915_request_retire, @@ -800,7 +817,8 @@ TRACE_EVENT(i915_request_wait_begin, TP_STRUCT__entry( __field(u32, dev) __field(u32, hw_id) - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(u32, ctx) __field(u32, seqno) __field(u32, global) @@ -816,17 +834,19 @@ TRACE_EVENT(i915_request_wait_begin, TP_fast_assign( __entry->dev = rq->i915->drm.primary->index; __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->seqno = rq->fence.seqno; __entry->global = rq->global_seqno; __entry->flags = flags; ), - TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, blocking=%u, flags=0x%x", - __entry->dev, __entry->hw_id, __entry->ring, __entry->ctx, - __entry->seqno, __entry->global, - !!(__entry->flags & I915_WAIT_LOCKED), __entry->flags) + 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->class, + __entry->instance, __entry->ctx, __entry->seqno, + __entry->global, !!(__entry->flags & I915_WAIT_LOCKED), + __entry->flags) ); DEFINE_EVENT(i915_request, i915_request_wait_end, @@ -966,21 +986,24 @@ TRACE_EVENT(switch_mm, TP_ARGS(engine, to), TP_STRUCT__entry( - __field(u32, ring) + __field(u32, class) + __field(u32, instance) __field(struct i915_gem_context *, to) __field(struct i915_address_space *, vm) __field(u32, dev) ), TP_fast_assign( - __entry->ring = engine->id; + __entry->class = engine->uabi_class; + __entry->instance = engine->instance; __entry->to = to; __entry->vm = to->ppgtt? &to->ppgtt->base : NULL; __entry->dev = engine->i915->drm.primary->index; ), - TP_printk("dev=%u, ring=%u, ctx=%p, ctx_vm=%p", - __entry->dev, __entry->ring, __entry->to, __entry->vm) + TP_printk("dev=%u, engine=%u:%u, ctx=%p, ctx_vm=%p", + __entry->dev, __entry->class, __entry->instance, __entry->to, + __entry->vm) ); #endif /* _I915_TRACE_H_ */