On Tue, Apr 11, 2023 at 03:56:08PM -0700, Rob Clark wrote: > From: Rob Clark <robdclark@xxxxxxxxxxxx> > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 ++- > drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c | 16 ++++++---------- > drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.h | 2 +- > 3 files changed, 9 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index f5ffca24def4..3611cfd5f076 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -2752,7 +2752,7 @@ static const struct file_operations amdgpu_driver_kms_fops = { > .compat_ioctl = amdgpu_kms_compat_ioctl, > #endif > #ifdef CONFIG_PROC_FS > - .show_fdinfo = amdgpu_show_fdinfo > + .show_fdinfo = drm_fop_show_fdinfo, > #endif > }; > > @@ -2807,6 +2807,7 @@ static const struct drm_driver amdgpu_kms_driver = { > .dumb_map_offset = amdgpu_mode_dumb_mmap, > .fops = &amdgpu_driver_kms_fops, > .release = &amdgpu_driver_release_kms, > + .show_fdinfo = amdgpu_show_fdinfo, > > .prime_handle_to_fd = drm_gem_prime_handle_to_fd, > .prime_fd_to_handle = drm_gem_prime_fd_to_handle, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > index 99a7855ab1bc..c2fdd5e448d1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > @@ -53,9 +53,8 @@ static const char *amdgpu_ip_name[AMDGPU_HW_IP_NUM] = { > [AMDGPU_HW_IP_VCN_JPEG] = "jpeg", > }; > > -void amdgpu_show_fdinfo(struct seq_file *m, struct file *f) > +void amdgpu_show_fdinfo(struct drm_printer *p, struct drm_file *file) > { > - struct drm_file *file = f->private_data; > struct amdgpu_device *adev = drm_to_adev(file->minor->dev); > struct amdgpu_fpriv *fpriv = file->driver_priv; > struct amdgpu_vm *vm = &fpriv->vm; > @@ -86,18 +85,15 @@ void amdgpu_show_fdinfo(struct seq_file *m, struct file *f) > * ****************************************************************** > */ > > - seq_printf(m, "pasid:\t%u\n", fpriv->vm.pasid); > - seq_printf(m, "drm-driver:\t%s\n", file->minor->dev->driver->name); > - seq_printf(m, "drm-pdev:\t%04x:%02x:%02x.%d\n", domain, bus, dev, fn); > - seq_printf(m, "drm-client-id:\t%Lu\n", vm->immediate.fence_context); > - seq_printf(m, "drm-memory-vram:\t%llu KiB\n", vram_mem/1024UL); > - seq_printf(m, "drm-memory-gtt: \t%llu KiB\n", gtt_mem/1024UL); > - seq_printf(m, "drm-memory-cpu: \t%llu KiB\n", cpu_mem/1024UL); > + drm_printf(p, "pasid:\t%u\n", fpriv->vm.pasid); > + drm_printf(p, "drm-memory-vram:\t%llu KiB\n", vram_mem/1024UL); > + drm_printf(p, "drm-memory-gtt: \t%llu KiB\n", gtt_mem/1024UL); > + drm_printf(p, "drm-memory-cpu: \t%llu KiB\n", cpu_mem/1024UL); random aside, but we're not super consistent here, some of these have an additional ' ' space. I guess a next step would be a drm_fdinfo_printf(drm_printer *p, const char *name, const char *printf, ...) and maybe some specialized ones that dtrt for specific parameters, like drm_fdinfo_llu(). But that's for next one I guess :-) -Daniel > for (hw_ip = 0; hw_ip < AMDGPU_HW_IP_NUM; ++hw_ip) { > if (!usage[hw_ip]) > continue; > > - seq_printf(m, "drm-engine-%s:\t%Ld ns\n", amdgpu_ip_name[hw_ip], > + drm_printf(p, "drm-engine-%s:\t%Ld ns\n", amdgpu_ip_name[hw_ip], > ktime_to_ns(usage[hw_ip])); > } > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.h > index e86834bfea1d..0398f5a159ef 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.h > @@ -37,6 +37,6 @@ > #include "amdgpu_ids.h" > > uint32_t amdgpu_get_ip_count(struct amdgpu_device *adev, int id); > -void amdgpu_show_fdinfo(struct seq_file *m, struct file *f); > +void amdgpu_show_fdinfo(struct drm_printer *p, struct drm_file *file); > > #endif > -- > 2.39.2 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch