On 7/30/2024 12:14 PM, Sunil Khatri wrote: > There are some problem with existing amdgpu_reset_dump_register_list > debugfs node. It is supposed to read a list of registers but there > could be cases when the IP is not in correct power state. Register > read in such cases could lead to more problems. > > We are taking care of all such power states in devcoredump and > dumping the registers of need for debugging. So cleaning this code > and we dont need this functionality via debugfs anymore. > > Signed-off-by: Sunil Khatri <sunil.khatri@xxxxxxx> Series is - Reviewed-by: Lijo Lazar <lijo.lazar@xxxxxxx> Thanks, Lijo > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 96 --------------------- > 1 file changed, 96 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index 0e1a11b6b989..cbef720de779 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -2026,100 +2026,6 @@ DEFINE_DEBUGFS_ATTRIBUTE(fops_ib_preempt, NULL, > DEFINE_DEBUGFS_ATTRIBUTE(fops_sclk_set, NULL, > amdgpu_debugfs_sclk_set, "%llu\n"); > > -static ssize_t amdgpu_reset_dump_register_list_read(struct file *f, > - char __user *buf, size_t size, loff_t *pos) > -{ > - struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private; > - char reg_offset[12]; > - int i, ret, len = 0; > - > - if (*pos) > - return 0; > - > - memset(reg_offset, 0, 12); > - ret = down_read_killable(&adev->reset_domain->sem); > - if (ret) > - return ret; > - > - for (i = 0; i < adev->reset_info.num_regs; i++) { > - sprintf(reg_offset, "0x%x\n", adev->reset_info.reset_dump_reg_list[i]); > - up_read(&adev->reset_domain->sem); > - if (copy_to_user(buf + len, reg_offset, strlen(reg_offset))) > - return -EFAULT; > - > - len += strlen(reg_offset); > - ret = down_read_killable(&adev->reset_domain->sem); > - if (ret) > - return ret; > - } > - > - up_read(&adev->reset_domain->sem); > - *pos += len; > - > - return len; > -} > - > -static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, > - const char __user *buf, size_t size, loff_t *pos) > -{ > - struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private; > - char reg_offset[11]; > - uint32_t *new = NULL, *tmp = NULL; > - unsigned int len = 0; > - int ret, i = 0; > - > - do { > - memset(reg_offset, 0, 11); > - if (copy_from_user(reg_offset, buf + len, > - min(10, (size-len)))) { > - ret = -EFAULT; > - goto error_free; > - } > - > - new = krealloc_array(tmp, i + 1, sizeof(uint32_t), GFP_KERNEL); > - if (!new) { > - ret = -ENOMEM; > - goto error_free; > - } > - tmp = new; > - if (sscanf(reg_offset, "%X %n", &tmp[i], &ret) != 1) { > - ret = -EINVAL; > - goto error_free; > - } > - > - len += ret; > - i++; > - } while (len < size); > - > - new = kmalloc_array(i, sizeof(uint32_t), GFP_KERNEL); > - if (!new) { > - ret = -ENOMEM; > - goto error_free; > - } > - ret = down_write_killable(&adev->reset_domain->sem); > - if (ret) > - goto error_free; > - > - swap(adev->reset_info.reset_dump_reg_list, tmp); > - swap(adev->reset_info.reset_dump_reg_value, new); > - adev->reset_info.num_regs = i; > - up_write(&adev->reset_domain->sem); > - ret = size; > - > -error_free: > - if (tmp != new) > - kfree(tmp); > - kfree(new); > - return ret; > -} > - > -static const struct file_operations amdgpu_reset_dump_register_list = { > - .owner = THIS_MODULE, > - .read = amdgpu_reset_dump_register_list_read, > - .write = amdgpu_reset_dump_register_list_write, > - .llseek = default_llseek > -}; > - > int amdgpu_debugfs_init(struct amdgpu_device *adev) > { > struct dentry *root = adev_to_drm(adev)->primary->debugfs_root; > @@ -2204,8 +2110,6 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev) > &amdgpu_debugfs_vm_info_fops); > debugfs_create_file("amdgpu_benchmark", 0200, root, adev, > &amdgpu_benchmark_fops); > - debugfs_create_file("amdgpu_reset_dump_register_list", 0644, root, adev, > - &amdgpu_reset_dump_register_list); > > adev->debugfs_vbios_blob.data = adev->bios; > adev->debugfs_vbios_blob.size = adev->bios_size;