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:alexdeucher at gmail.com] >> Sent: Friday, August 11, 2017 1:01 AM >> To: Wang, Annie <Annie.Wang at amd.com> >> Cc: amd-gfx list <amd-gfx at 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.Wang at 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.Wang at 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 at lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx