[PATCH 7/8] drm/amdgpu: trace the vmhub in grab_id as well

Andres Rodriguez andresx7 at gmail.com
Tue Apr 11 14:26:30 UTC 2017



On 2017-04-07 12:11 PM, Christian König wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Trace on which VMHUB we assigned an VMID.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 17 ++++++++++-------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c    |  2 +-
>  2 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> index 381b770..6032161 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> @@ -190,26 +190,29 @@ TRACE_EVENT(amdgpu_sched_run_job,
>
>
>  TRACE_EVENT(amdgpu_vm_grab_id,
> -	    TP_PROTO(struct amdgpu_vm *vm, int ring, struct amdgpu_job *job),
> +	    TP_PROTO(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
> +		     struct amdgpu_job *job),
>  	    TP_ARGS(vm, ring, job),
>  	    TP_STRUCT__entry(
>  			     __field(struct amdgpu_vm *, vm)
>  			     __field(u32, ring)
> -			     __field(u32, vmid)
> +			     __field(u32, vm_id)
> +			     __field(u32, vm_hub)
>  			     __field(u64, pd_addr)
>  			     __field(u32, needs_flush)
>  			     ),
>
>  	    TP_fast_assign(
>  			   __entry->vm = vm;
> -			   __entry->ring = ring;
> -			   __entry->vmid = job->vm_id;
> +			   __entry->ring = ring->idx;
> +			   __entry->vm_id = job->vm_id;
> +			   __entry->vm_hub = ring->funcs->vmhub,
>  			   __entry->pd_addr = job->vm_pd_addr;
>  			   __entry->needs_flush = job->vm_needs_flush;
>  			   ),
> -	    TP_printk("vm=%p, ring=%u, id=%u, pd_addr=%010Lx needs_flush=%u",
> -		      __entry->vm, __entry->ring, __entry->vmid,
> -		      __entry->pd_addr, __entry->needs_flush)
> +	    TP_printk("vm=%p, ring=%u, id=%u, hub=%u, pd_addr=%010Lx needs_flush=%u",
> +		      __entry->vm, __entry->ring, __entry->vm_id,
> +		      __entry->vm_hub, __entry->pd_addr, __entry->needs_flush)
>  );

This is where I meant to request tracing of the job id. This job may 
have incurred some extra overhead due to a vmid being requested. I think 
that information would be useful to capture and tie to the job 
submission traces.

Regards,
Andres

>
>  TRACE_EVENT(amdgpu_vm_bo_map,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index d0b6f20..494645e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -533,7 +533,7 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
>  	list_move_tail(&id->list, &id_mgr->ids_lru);
>
>  	job->vm_id = id - id_mgr->ids;
> -	trace_amdgpu_vm_grab_id(vm, ring->idx, job);
> +	trace_amdgpu_vm_grab_id(vm, ring, job);
>
>  error:
>  	mutex_unlock(&id_mgr->lock);
>


More information about the amd-gfx mailing list