[PATCH 05/21] drm/amdgpu: trace allocated PASIDs

Chunming Zhou zhoucm1 at amd.com
Thu Jan 11 05:21:19 UTC 2018



On 2018年01月10日 20:54, Christian König wrote:
> Trace all allocated PASIDs.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c   | 12 ++++++++++--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 22 ++++++++++++++++++++++
>   2 files changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index 60e0f2dd87df..0948df366278 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -31,6 +31,7 @@
>   #include "amdgpu_sched.h"
>   #include "amdgpu_uvd.h"
>   #include "amdgpu_vce.h"
> +#include "amdgpu_trace.h"
>   
>   #include <linux/vga_switcheroo.h>
>   #include <linux/slab.h>
> @@ -823,7 +824,10 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
>   	if (pasid < 0) {
>   		dev_info(adev->dev, "No more PASIDs available!");
>   		pasid = 0;
> +	} else {
> +		trace_amdgpu_pasid_allocated(pasid);
How about moving to amdgpu_pasid_alloc?
>   	}
> +
>   	r = amdgpu_vm_init(adev, &fpriv->vm, AMDGPU_VM_CONTEXT_GFX, pasid);
>   	if (r)
>   		goto error_pasid;
> @@ -852,8 +856,10 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
>   	amdgpu_vm_fini(adev, &fpriv->vm);
>   
>   error_pasid:
> -	if (pasid)
> +	if (pasid) {
>   		amdgpu_pasid_free(pasid);
> +		trace_amdgpu_pasid_freed(pasid);
How about moving to amdgpu_pasid_free?
> +	}
>   
>   	kfree(fpriv);
>   
> @@ -908,8 +914,10 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
>   	pd = amdgpu_bo_ref(fpriv->vm.root.base.bo);
>   
>   	amdgpu_vm_fini(adev, &fpriv->vm);
> -	if (pasid)
> +	if (pasid) {
>   		amdgpu_pasid_free_delayed(pd->tbo.resv, pasid);
> +		trace_amdgpu_pasid_freed(pasid);
How about moving to amdgpu_pasid_free?

Regards,
David Zhou
> +	}
>   	amdgpu_bo_unref(&pd);
>   
>   	idr_for_each_entry(&fpriv->bo_list_handles, list, handle)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> index cace7a93fc94..9890c39ee810 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
> @@ -378,6 +378,28 @@ TRACE_EVENT(amdgpu_vm_flush,
>   		      __entry->vm_hub,__entry->pd_addr)
>   );
>   
> +DECLARE_EVENT_CLASS(amdgpu_pasid,
> +	    TP_PROTO(unsigned pasid),
> +	    TP_ARGS(pasid),
> +	    TP_STRUCT__entry(
> +			     __field(unsigned, pasid)
> +			     ),
> +	    TP_fast_assign(
> +			   __entry->pasid = pasid;
> +			   ),
> +	    TP_printk("pasid=%u", __entry->pasid)
> +);
> +
> +DEFINE_EVENT(amdgpu_pasid, amdgpu_pasid_allocated,
> +	    TP_PROTO(unsigned pasid),
> +	    TP_ARGS(pasid)
> +);
> +
> +DEFINE_EVENT(amdgpu_pasid, amdgpu_pasid_freed,
> +	    TP_PROTO(unsigned pasid),
> +	    TP_ARGS(pasid)
> +);
> +
>   TRACE_EVENT(amdgpu_bo_list_set,
>   	    TP_PROTO(struct amdgpu_bo_list *list, struct amdgpu_bo *bo),
>   	    TP_ARGS(list, bo),



More information about the amd-gfx mailing list