[PATCH 2/2] drm/amdgpu: trace fence details in amdgpu_sched_run_job

Alex Deucher alexdeucher at gmail.com
Wed Mar 8 21:35:23 UTC 2017


On Sat, Feb 25, 2017 at 4:39 AM, Christian König
<deathsimple at vodafone.de> wrote:
> Am 24.02.2017 um 19:20 schrieb Andres Rodriguez:
>>
>> This information is intended to provide the required data to associate
>> amdgpu tracepoints with their corresponding dma_fence_* events.
>>
>> Signed-off-by: Andres Rodriguez <andresx7 at gmail.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 11 +++++++++--
>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
>> index 01623d1..cc9a31d 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
>> @@ -130,6 +130,9 @@ TRACE_EVENT(amdgpu_sched_run_job,
>>                              __field(struct amd_sched_job *, sched_job)
>>                              __field(struct amdgpu_ib *, ib)
>>                              __field(struct dma_fence *, fence)
>> +                            __string(timeline,
>> job->base.s_fence->finished.ops->get_timeline_name(&job->base.s_fence->finished))
>> +                            __field(unsigned int, context)
>> +                            __field(unsigned int, seqno)
>>                              __field(char *, ring_name)
>>                              __field(u32, num_ibs)
>>                              ),
>> @@ -139,12 +142,16 @@ TRACE_EVENT(amdgpu_sched_run_job,
>>                            __entry->sched_job = &job->base;
>>                            __entry->ib = job->ibs;
>>                            __entry->fence = &job->base.s_fence->finished;
>> +                          __assign_str(timeline,
>> job->base.s_fence->finished.ops->get_timeline_name(&job->base.s_fence->finished))
>
>
> Not 100% sure, but we might be able to use a char * field here instead of
> the extra overhead of embedding a string, the timeline names are never freed
> IIRC.
>
>> +                          __entry->context =
>> job->base.s_fence->finished.context;
>> +                          __entry->seqno =
>> job->base.s_fence->finished.seqno;
>>                            __entry->ring_name = job->ring->name;
>>                            __entry->num_ibs = job->num_ibs;
>>                            ),
>> -           TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p,
>> ring name=%s, num_ibs=%u",
>> +           TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p,
>> timeline=%s, context=%u, seqno=%u, ring name=%s, num_ibs=%u",
>
>
> If you have time for another patch please drop the pinters here as well.
> Scheduler job, IBs and fence are all heavily reallocated (sometimes even
> with a slab allocator). So the pointers are completely meaningless. The adev
> pointer is superseded by the timeline name and context numbers.
>
> Anyway that should be done in an extra patch, so this one is Reviewed-by:
> Christian König <christian.koenig at amd.com>.

Applied.  thanks!

Alex


>
> Regards,
> Christian.
>
>>                       __entry->adev, __entry->sched_job, __entry->ib,
>> -                     __entry->fence, __entry->ring_name,
>> __entry->num_ibs)
>> +                     __entry->fence, __get_str(timeline),
>> __entry->context, __entry->seqno,
>> +                     __entry->ring_name, __entry->num_ibs)
>>   );
>>
>
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list