<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Am 13.07.20 um 15:34 schrieb Yuan,
Xiaojie:<br>
</div>
<blockquote type="cite" cite="mid:MW2PR12MB2586787CBB596190ECDF754789600@MW2PR12MB2586.namprd12.prod.outlook.com">
<pre class="moz-quote-pre" wrap="">[AMD Official Use Only - Internal Distribution Only]
Hi Chris,
This was observed when I was trying to add a new debugfs file.</pre>
</blockquote>
<br>
In this case please add the new file using debugfs_create_file()
directly and don't touch this old code.<br>
<br>
<blockquote type="cite" cite="mid:MW2PR12MB2586787CBB596190ECDF754789600@MW2PR12MB2586.namprd12.prod.outlook.com">
<pre class="moz-quote-pre" wrap=""> Some similar
occurrences using ARRAY_SIZE() are:
- amdgpu_kms.c :: amdgpu_firmware_info_list
- amdgpu_pm.c :: amdgpu_debugfs_pm_info
- amdgpu_ttm.c :: amdgpu_ttm_debugfs_list
- amdgpu_dm_debugfs.c :: amdgpu_dm_debugfs_list
This patch simply unified the usage of amdgpu_debugfs_add_files().
BTW, do you intended to use:
debugfs_create_file() - need to call debugfs_remove() explicitly
or the drm helper
drm_debugfs_create_files() - debugfs files will be removed automatically</pre>
</blockquote>
<br>
No, exactly that's the point. All debugfs files are automatically
removed when the driver unloads because the parent directory is
removed.<br>
<br>
See the debugfs.h file in the Linux source code:<br>
<br>
<blockquote type="cite">
<pre><span class="kt">void</span> <span class="nf"><a href="https://elixir.bootlin.com/linux/latest/C/ident/debugfs_remove">debugfs_remove</a></span><span class="p">(</span><span class="k">struct</span> <span class="n"><a href="https://elixir.bootlin.com/linux/latest/C/ident/dentry">dentry</a></span> <span class="o">*</span><span class="n"><a href="https://elixir.bootlin.com/linux/latest/C/ident/dentry">dentry</a></span><span class="p">);</span>
<span class="cp">#define <a href="https://elixir.bootlin.com/linux/latest/C/ident/debugfs_remove_recursive">debugfs_remove_recursive</a> <a href="https://elixir.bootlin.com/linux/latest/C/ident/debugfs_remove">debugfs_remove</a></span></pre>
</blockquote>
<br>
The whole tracking amdgpu_debugfs_add_files() and the underlying DRM
function do are completely nonsense and was only added because
somebody didn't knew that this stuff is automatically removed.<br>
<br>
The only functionality amdgpu_debugfs_add_files() still provides is
protecting to not try to add files twice. And that in turn is a
coding bug we should probably fix :)<br>
<br>
Regards,<br>
Christian.<br>
<br>
<blockquote type="cite" cite="mid:MW2PR12MB2586787CBB596190ECDF754789600@MW2PR12MB2586.namprd12.prod.outlook.com">
<pre class="moz-quote-pre" wrap="">
If so, we need a separate patch to cleanup them in a batch.
BR,
Xiaojie
________________________________________
From: Christian König <a class="moz-txt-link-rfc2396E" href="mailto:ckoenig.leichtzumerken@gmail.com"><ckoenig.leichtzumerken@gmail.com></a>
Sent: Monday, July 13, 2020 4:38 PM
To: Yuan, Xiaojie; <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>
Subject: Re: [PATCH] drm/amdgpu: use ARRAY_SIZE() to add amdgpu debugfs files
Am 13.07.20 um 07:59 schrieb Xiaojie Yuan:
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">to easily add new debugfs file w/o changing the hardcoded list count.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
In general a good idea, but I would rather like to see
amdgpu_debugfs_add_files() completely removed and debugfs_create_file()
used directly instead.
Christian.
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">
Signed-off-by: Xiaojie Yuan <a class="moz-txt-link-rfc2396E" href="mailto:xiaojie.yuan@amd.com"><xiaojie.yuan@amd.com></a>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 6 ++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 3 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 3 ++-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index b8ce43c28116..58d4c219178a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -781,8 +781,10 @@ int amdgpu_debugfs_fence_init(struct amdgpu_device *adev)
{
#if defined(CONFIG_DEBUG_FS)
if (amdgpu_sriov_vf(adev))
- return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_fence_list_sriov, 1);
- return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_fence_list, 2);
+ return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_fence_list_sriov,
+ ARRAY_SIZE(amdgpu_debugfs_fence_list_sriov));
+ return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_fence_list,
+ ARRAY_SIZE(amdgpu_debugfs_fence_list));
#else
return 0;
#endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 77d988a0033f..8c64d8d6cb82 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -928,7 +928,8 @@ static const struct drm_info_list amdgpu_debugfs_gem_list[] = {
int amdgpu_debugfs_gem_init(struct amdgpu_device *adev)
{
#if defined(CONFIG_DEBUG_FS)
- return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_gem_list, 1);
+ return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_gem_list,
+ ARRAY_SIZE(amdgpu_debugfs_gem_list));
#endif
return 0;
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
index 4ffc32b78745..dcd492170598 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
@@ -468,7 +468,8 @@ static const struct drm_info_list amdgpu_debugfs_sa_list[] = {
int amdgpu_debugfs_sa_init(struct amdgpu_device *adev)
{
#if defined(CONFIG_DEBUG_FS)
- return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_sa_list, 1);
+ return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_sa_list,
+ ARRAY_SIZE(amdgpu_debugfs_sa_list));
#else
return 0;
#endif
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
</pre>
</blockquote>
<br>
</body>
</html>