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),