Quoting Lionel Landwerlin (2017-12-18 12:12:48) > When monitoring the GPU with i915 perf, reports are tagged with a hw > id. Gem context creation tracepoints already have a hw_id field, > unfortunately you only get this correlation between a process id and a > hw context id once when the context is created. It doesn't help if you > started monitoring after the process was initialized or if the drm fd > was transfered from one process to another. > > This change adds the hw_id field to gem requests, so that correlation > can also be done on submission. > > v2: Place hw_id at the end of the tracepoint to not disrupt too much > existing tools (Chris) > > v3: Reorder hw_id field again (Chris) > > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_trace.h | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h > index 321f74bae0e1..042c43a4bd59 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -616,6 +616,7 @@ TRACE_EVENT(i915_gem_request_queue, > > TP_STRUCT__entry( > __field(u32, dev) > + __field(u32, hw_id) > __field(u32, ring) > __field(u32, ctx) > __field(u32, seqno) > @@ -624,15 +625,16 @@ TRACE_EVENT(i915_gem_request_queue, > > TP_fast_assign( > __entry->dev = req->i915->drm.primary->index; > + __entry->hw_id = req->ctx->hw_id; > __entry->ring = req->engine->id; > __entry->ctx = req->fence.context; > __entry->seqno = req->fence.seqno; > __entry->flags = flags; > ), > > - TP_printk("dev=%u, ring=%u, ctx=%u, seqno=%u, flags=0x%x", > - __entry->dev, __entry->ring, __entry->ctx, __entry->seqno, > - __entry->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) > ); > > DECLARE_EVENT_CLASS(i915_gem_request, > @@ -641,6 +643,7 @@ DECLARE_EVENT_CLASS(i915_gem_request, > > TP_STRUCT__entry( > __field(u32, dev) > + __field(u32, hw_id) > __field(u32, ring) > __field(u32, ctx) > __field(u32, seqno) > @@ -649,15 +652,16 @@ DECLARE_EVENT_CLASS(i915_gem_request, > > TP_fast_assign( > __entry->dev = req->i915->drm.primary->index; > + __entry->hw_id = req->ctx->hw_id; > __entry->ring = req->engine->id; > __entry->ctx = req->fence.context; > __entry->seqno = req->fence.seqno; > __entry->global = req->global_seqno; > ), > > - TP_printk("dev=%u, ring=%u, ctx=%u, seqno=%u, global=%u", > - __entry->dev, __entry->ring, __entry->ctx, __entry->seqno, > - __entry->global) > + 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) > ); > > DEFINE_EVENT(i915_gem_request, i915_gem_request_add, > @@ -683,6 +687,7 @@ DECLARE_EVENT_CLASS(i915_gem_request_hw, > > TP_STRUCT__entry( > __field(u32, dev) > + __field(u32, hw_id) > __field(u32, ring) > __field(u32, ctx) > __field(u32, seqno) > @@ -692,6 +697,7 @@ DECLARE_EVENT_CLASS(i915_gem_request_hw, > > TP_fast_assign( > __entry->dev = req->i915->drm.primary->index; > + __entry->hw_id = req->ctx->hw_id; > __entry->ring = req->engine->id; > __entry->ctx = req->fence.context; > __entry->seqno = req->fence.seqno; > @@ -699,10 +705,10 @@ DECLARE_EVENT_CLASS(i915_gem_request_hw, > __entry->port = port; > ), > > - TP_printk("dev=%u, ring=%u, ctx=%u, seqno=%u, global=%u, port=%u", > - __entry->dev, __entry->ring, __entry->ctx, > - __entry->seqno, __entry->global_seqno, > - __entry->port) > + TP_printk("dev=%u, hw_id=%u, ring=%u, ctx=%u, seqno=%u, global=%u, port=%u", > + __entry->dev, __entry->hw_id, __entry->ring, > + __entry->ctx, __entry->seqno, > + __entry->global_seqno, __entry->port) > ); Missed i915_gem_request_wait_begin? -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx