Hi Annie,

well something is clearly not working as expected here.

All those files are registered with drm_debugfs_create_files() and should automatically be removed when drm_debugfs_cleanup() is called.

Can you figure out what is going wrong here?

Thanks,
Christian.

Am 11.08.2017 um 04:25 schrieb Wang, Annie:
Hi Alex,

The following files are all left.

amdgpu_fence_info
amdgpu_firmware_info
amdgpu_gem_info
amdgpu_gpu_reset
amdgpu_gtt_mm
amdgpu_pm_info
amdgpu_sa_info
amdgpu_test_ib
amdgpu_vram_mm
ttm_dma_page_pool
ttm_page_pool

Instead of fini them separately,  how about implement the callback function --- 
 debugfs_fini.
          .debugfs_fini = amdgpu_debugfs_cleanup,

And in the future I will send another patch to collect all the init function
          .debugfs_init = amdgpu_debugfs_init,


-----Original Message-----
From: Alex Deucher [mailto:alexdeuc...@gmail.com]
Sent: Friday, August 11, 2017 1:01 AM
To: Wang, Annie <annie.w...@amd.com>
Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>
Subject: Re: [PATCH] drm/amd/amdgpu: fix bug fail to remove debugfs when
rmmod

On Thu, Aug 10, 2017 at 5:12 AM, Wang Hongcheng <annie.w...@amd.com>
wrote:
Some debug files are forgotten to remove at fini. Remove them all in
pci_remove.

BUG: SWDEV-129297
What files are failing to get removed?  I'd prefer to remove them in the 
relevant
places in the code (to mirror where they are added) rather than generically
cleaning everything up.  Either that or unify all the debugfs init/fini stuff 
in one
place.

Alex

Signed-off-by: Wang Hongcheng <annie.w...@amd.com>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  2 ++
  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 19 +++++++++++++++++++
  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    |  2 ++
  3 files changed, 23 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index c28069e4..b542191 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -1250,6 +1250,8 @@ struct amdgpu_debugfs {  int
amdgpu_debugfs_add_files(struct amdgpu_device *adev,
                              const struct drm_info_list *files,
                              unsigned nfiles);
+int amdgpu_debugfs_cleanup(struct amdgpu_device *adev);
+
  int amdgpu_debugfs_fence_init(struct amdgpu_device *adev);

  #if defined(CONFIG_DEBUG_FS)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 7e40071..7594abb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3215,6 +3215,25 @@ int amdgpu_debugfs_add_files(struct
amdgpu_device *adev,
         return 0;
  }

+int amdgpu_debugfs_cleanup(struct amdgpu_device *adev) {
+       struct drm_info_node *node, *tmp;
+
+       if (!&adev->ddev->primary->debugfs_root)
+               return 0;
+
+       mutex_lock(&adev->ddev->primary->debugfs_lock);
+       list_for_each_entry_safe(node, tmp,
+               &adev->ddev->primary->debugfs_list, list) {
+               debugfs_remove(node->dent);
+               list_del(&node->list);
+               kfree(node);
+       }
+       mutex_unlock(&adev->ddev->primary->debugfs_lock);
+
+       return 0;
+}
+
  #if defined(CONFIG_DEBUG_FS)

  static ssize_t amdgpu_debugfs_regs_read(struct file *f, char __user
*buf, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 13c91a6..4f5af93 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -594,7 +594,9 @@ static void
  amdgpu_pci_remove(struct pci_dev *pdev)  {
         struct drm_device *dev = pci_get_drvdata(pdev);
+       struct amdgpu_device *adev = dev->dev_private;

+       amdgpu_debugfs_cleanup(adev);
         drm_dev_unregister(dev);
         drm_dev_unref(dev);
  }
--
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to