On 3/6/26 12:33, Sunil Khatri wrote: > Debugfs files for amdgpu are better to be handled in the dedicated > amdgpu_debugfs.c/.h files. > > Signed-off-by: Sunil Khatri <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 53 +++++++++++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h | 4 ++ > drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 47 +----------------- > 3 files changed, 58 insertions(+), 46 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index f51c3443159d..63b702ec972b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -39,6 +39,7 @@ > > #include "amdgpu_reset.h" > #include "amdgpu_psp_ta.h" > +#include "amdgpu_userq.h" > > #if defined(CONFIG_DEBUG_FS) > > @@ -2156,6 +2157,53 @@ static const struct file_operations > amdgpu_pt_info_fops = { > .release = single_release, > }; > > +static int amdgpu_mqd_info_read(struct seq_file *m, void *unused) > +{ > + struct amdgpu_usermode_queue *queue = m->private; > + struct amdgpu_bo *bo; > + int r; > + > + if (!queue || !queue->mqd.obj) > + return -EINVAL; > + > + bo = amdgpu_bo_ref(queue->mqd.obj); > + r = amdgpu_bo_reserve(bo, true); > + if (r) { > + amdgpu_bo_unref(&bo); > + return -EINVAL; > + } > + > + seq_printf(m, "queue_type: %d\n", queue->queue_type); > + seq_printf(m, "mqd_gpu_address: 0x%llx\n", > amdgpu_bo_gpu_offset(queue->mqd.obj)); > + > + amdgpu_bo_unreserve(bo); > + amdgpu_bo_unref(&bo); > + > + return 0; > +} > + > +static int amdgpu_mqd_info_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, amdgpu_mqd_info_read, inode->i_private); > +} > + > +static const struct file_operations amdgpu_mqd_info_fops = { > + .owner = THIS_MODULE, > + .open = amdgpu_mqd_info_open, > + .read = seq_read, > + .llseek = seq_lseek, > + .release = single_release, > +}; > + > +void amdgpu_debugfs_userq_init(struct drm_file *file, struct > amdgpu_usermode_queue *queue, int qid) > +{ > + char queue_name[32]; > + > + scnprintf(queue_name, sizeof(queue_name), "queue_%d", qid); > + queue->debugfs_queue = debugfs_create_dir(queue_name, > file->debugfs_client); > + debugfs_create_file("mqd_info", 0444, queue->debugfs_queue, queue, > &amdgpu_mqd_info_fops); > +} > + > void amdgpu_debugfs_vm_init(struct drm_file *file) > { > debugfs_create_file("vm_pagetable_info", 0444, file->debugfs_client, > file, > @@ -2174,4 +2222,9 @@ int amdgpu_debugfs_regs_init(struct amdgpu_device *adev) > void amdgpu_debugfs_vm_init(struct drm_file *file) > { > } > +void amdgpu_debugfs_userq_init(struct drm_file *file, > + struct amdgpu_usermode_queue *queue, > + int qid) > +{ > +} > #endif > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h > index e7b3c38e5186..e88b4a1e564c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h > @@ -25,6 +25,7 @@ > /* > * Debugfs > */ > +struct amdgpu_usermode_queue; > > int amdgpu_debugfs_regs_init(struct amdgpu_device *adev); > int amdgpu_debugfs_init(struct amdgpu_device *adev); > @@ -34,4 +35,7 @@ void amdgpu_debugfs_firmware_init(struct amdgpu_device > *adev); > void amdgpu_debugfs_gem_init(struct amdgpu_device *adev); > void amdgpu_debugfs_mes_event_log_init(struct amdgpu_device *adev); > void amdgpu_debugfs_vm_init(struct drm_file *file); > +void amdgpu_debugfs_userq_init(struct drm_file *file, > + struct amdgpu_usermode_queue *queue, > + int qid); > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > index 1543ca324f43..472936f90c19 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > @@ -709,46 +709,6 @@ static int amdgpu_userq_priority_permit(struct drm_file > *filp, > return -EACCES; > } > > -#if defined(CONFIG_DEBUG_FS) > -static int amdgpu_mqd_info_read(struct seq_file *m, void *unused) > -{ > - struct amdgpu_usermode_queue *queue = m->private; > - struct amdgpu_bo *bo; > - int r; > - > - if (!queue || !queue->mqd.obj) > - return -EINVAL; > - > - bo = amdgpu_bo_ref(queue->mqd.obj); > - r = amdgpu_bo_reserve(bo, true); > - if (r) { > - amdgpu_bo_unref(&bo); > - return -EINVAL; > - } > - > - seq_printf(m, "queue_type: %d\n", queue->queue_type); > - seq_printf(m, "mqd_gpu_address: 0x%llx\n", > amdgpu_bo_gpu_offset(queue->mqd.obj)); > - > - amdgpu_bo_unreserve(bo); > - amdgpu_bo_unref(&bo); > - > - return 0; > -} > - > -static int amdgpu_mqd_info_open(struct inode *inode, struct file *file) > -{ > - return single_open(file, amdgpu_mqd_info_read, inode->i_private); > -} > - > -static const struct file_operations amdgpu_mqd_info_fops = { > - .owner = THIS_MODULE, > - .open = amdgpu_mqd_info_open, > - .read = seq_read, > - .llseek = seq_lseek, > - .release = single_release, > -}; > -#endif > - > static int > amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args) > { > @@ -886,12 +846,7 @@ amdgpu_userq_create(struct drm_file *filp, union > drm_amdgpu_userq *args) > up_read(&adev->reset_domain->sem); > > #if defined(CONFIG_DEBUG_FS) > - char queue_name[32]; > - > - scnprintf(queue_name, sizeof(queue_name), "queue_%d", qid); > - /* Queue dentry per client to hold MQD information */ > - queue->debugfs_queue = debugfs_create_dir(queue_name, > filp->debugfs_client); > - debugfs_create_file("mqd_info", 0444, queue->debugfs_queue, queue, > &amdgpu_mqd_info_fops); > + amdgpu_debugfs_userq_init(filp, queue, qid); > #endif
That #if defined protection can now be dropped. With that fixed Reviewed-by: Christian König <[email protected]>. Regards, Christian. > amdgpu_userq_init_hang_detect_work(queue); >
