[Intel-gfx] [PATCH 2/2] drm/i915/trace: add hw_id to gem requests trace points

Lionel Landwerlin lionel.g.landwerlin at intel.com
Mon Dec 18 14:17:36 UTC 2017


On 18/12/17 13:35, Chris Wilson wrote:
> 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 at intel.com>
>> ---
>>   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
>
Indeed, apologies :|



More information about the Intel-gfx mailing list