* [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry
@ 2021-02-10 16:06 Nirmoy Das
2021-02-10 16:06 ` [PATCH 2/2] drm/radeon: cleanup debugfs Nirmoy Das
2021-02-10 18:22 ` [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Christian König
0 siblings, 2 replies; 4+ messages in thread
From: Nirmoy Das @ 2021-02-10 16:06 UTC (permalink / raw)
To: Christian.Koenig; +Cc: Nirmoy Das, amd-gfx
Cleanup unwanted debugfs dentries.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 12 +++-----
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 34 ++++++++++-----------
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 4 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +--
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 4 ---
drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h | 3 --
7 files changed, 23 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index e0c797a5f739..e3d4d2dcb3a0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -797,10 +797,6 @@ struct amdgpu_device {
struct amdgpu_i2c_chan *i2c_bus[AMDGPU_MAX_I2C_BUS];
struct amdgpu_debugfs debugfs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
unsigned debugfs_count;
-#if defined(CONFIG_DEBUG_FS)
- struct dentry *debugfs_preempt;
- struct dentry *debugfs_regs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
-#endif
struct amdgpu_atif *atif;
struct amdgpu_atcs atcs;
struct mutex srbm_mutex;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index 4c38c5771cbc..874522217b7c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -1228,7 +1228,6 @@ int amdgpu_debugfs_regs_init(struct amdgpu_device *adev)
adev, debugfs_regs[i]);
if (!i && !IS_ERR_OR_NULL(ent))
i_size_write(ent->d_inode, adev->rmmio_size);
- adev->debugfs_regs[i] = ent;
}
return 0;
@@ -1592,21 +1591,20 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL,
int amdgpu_debugfs_init(struct amdgpu_device *adev)
{
int r, i;
+ struct dentry *ent = NULL;
- adev->debugfs_preempt =
- debugfs_create_file("amdgpu_preempt_ib", 0600,
+ ent = debugfs_create_file("amdgpu_preempt_ib", 0600,
adev_to_drm(adev)->primary->debugfs_root, adev,
&fops_ib_preempt);
- if (!(adev->debugfs_preempt)) {
+ if (!ent) {
DRM_ERROR("unable to create amdgpu_preempt_ib debugsfs file\n");
return -EIO;
}
- adev->smu.debugfs_sclk =
- debugfs_create_file("amdgpu_force_sclk", 0200,
+ ent = debugfs_create_file("amdgpu_force_sclk", 0200,
adev_to_drm(adev)->primary->debugfs_root, adev,
&fops_sclk_set);
- if (!(adev->smu.debugfs_sclk)) {
+ if (!ent) {
DRM_ERROR("unable to create amdgpu_set_sclk debugsfs file\n");
return -EIO;
}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 1fb2a91ad30a..1efdfb9b5506 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1137,15 +1137,16 @@ static int amdgpu_ras_sysfs_remove_all(struct amdgpu_device *adev)
*
*/
/* debugfs begin */
-static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
+static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev,
+ struct dentry *dir)
{
struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
struct drm_minor *minor = adev_to_drm(adev)->primary;
- con->dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
- debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, con->dir,
+ dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
+ debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, dir,
adev, &amdgpu_ras_debugfs_ctrl_ops);
- debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO, con->dir,
+ debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO, dir,
adev, &amdgpu_ras_debugfs_eeprom_ops);
/*
@@ -1156,7 +1157,7 @@ static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
* ERREVENT_ATHUB_INTERRUPT generated. Normal GPU recovery routine
* will never be called.
*/
- debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, con->dir,
+ debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, dir,
&con->reboot);
/*
@@ -1164,16 +1165,16 @@ static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
* of RAS IPs during ras recovery.
*/
debugfs_create_bool("disable_ras_err_cnt_harvest", 0644,
- con->dir, &con->disable_ras_err_cnt_harvest);
+ dir, &con->disable_ras_err_cnt_harvest);
}
static void amdgpu_ras_debugfs_create(struct amdgpu_device *adev,
- struct ras_fs_if *head)
+ struct ras_fs_if *head,
+ struct dentry *dir)
{
- struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head->head);
- if (!obj || obj->ent)
+ if (!obj || !dir)
return;
get_obj(obj);
@@ -1182,9 +1183,8 @@ static void amdgpu_ras_debugfs_create(struct amdgpu_device *adev,
head->debugfs_name,
sizeof(obj->fs_data.debugfs_name));
- obj->ent = debugfs_create_file(obj->fs_data.debugfs_name,
- S_IWUGO | S_IRUGO, con->dir, obj,
- &amdgpu_ras_debugfs_ops);
+ debugfs_create_file(obj->fs_data.debugfs_name, S_IWUGO | S_IRUGO, dir,
+ obj, &amdgpu_ras_debugfs_ops);
}
void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
@@ -1192,6 +1192,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
struct ras_manager *obj;
struct ras_fs_if fs_info;
+ struct dentry *dir = NULL;
/*
* it won't be called in resume path, no need to check
@@ -1200,7 +1201,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
if (!IS_ENABLED(CONFIG_DEBUG_FS) || !con)
return;
- amdgpu_ras_debugfs_create_ctrl_node(adev);
+ amdgpu_ras_debugfs_create_ctrl_node(adev, dir);
list_for_each_entry(obj, &con->head, node) {
if (amdgpu_ras_is_supported(adev, obj->head.block) &&
@@ -1208,7 +1209,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
sprintf(fs_info.debugfs_name, "%s_err_inject",
ras_block_str(obj->head.block));
fs_info.head = obj->head;
- amdgpu_ras_debugfs_create(adev, &fs_info);
+ amdgpu_ras_debugfs_create(adev, &fs_info, dir);
}
}
}
@@ -1218,10 +1219,9 @@ static void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev,
{
struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
- if (!obj || !obj->ent)
+ if (!obj)
return;
- obj->ent = NULL;
put_obj(obj);
}
@@ -1233,8 +1233,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
list_for_each_entry_safe(obj, tmp, &con->head, node) {
amdgpu_ras_debugfs_remove(adev, &obj->head);
}
-
- con->dir = NULL;
}
/* debugfs end */
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
index 762f5e46c007..aed0716efa5a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
@@ -318,8 +318,6 @@ struct amdgpu_ras {
uint32_t supported;
uint32_t features;
struct list_head head;
- /* debugfs */
- struct dentry *dir;
/* sysfs */
struct device_attribute features_attr;
struct bin_attribute badpages_attr;
@@ -395,8 +393,6 @@ struct ras_manager {
struct list_head node;
/* the device */
struct amdgpu_device *adev;
- /* debugfs */
- struct dentry *ent;
/* sysfs */
struct device_attribute sysfs_attr;
int attr_inuse;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index aaad9e304ad9..f4d7cf60c262 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1788,7 +1788,7 @@ static void amdgpu_ttm_training_data_block_init(struct amdgpu_device *adev)
(adev->gmc.mc_vram_size - GDDR6_MEM_TRAINING_OFFSET);
ctx->train_data_size =
GDDR6_MEM_TRAINING_DATA_SIZE_IN_BYTES;
-
+
DRM_DEBUG("train_data_size:%llx,p2c_train_data_offset:%llx,c2p_train_data_offset:%llx.\n",
ctx->train_data_size,
ctx->p2c_train_data_offset,
@@ -2560,11 +2560,11 @@ int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev)
ttm_debugfs_entries[count].fops);
if (IS_ERR(ent))
return PTR_ERR(ent);
+
if (ttm_debugfs_entries[count].domain == TTM_PL_VRAM)
i_size_write(ent->d_inode, adev->gmc.mc_vram_size);
else if (ttm_debugfs_entries[count].domain == TTM_PL_TT)
i_size_write(ent->d_inode, adev->gmc.gart_size);
- adev->mman.debugfs_entries[count] = ent;
}
count = ARRAY_SIZE(amdgpu_ttm_debugfs_list);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
index 6c142455fc66..4df4cf2fd4dd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
@@ -68,10 +68,6 @@ struct amdgpu_mman {
bool initialized;
void __iomem *aper_base_kaddr;
-#if defined(CONFIG_DEBUG_FS)
- struct dentry *debugfs_entries[8];
-#endif
-
/* buffer handling */
const struct amdgpu_buffer_funcs *buffer_funcs;
struct amdgpu_ring *buffer_funcs_ring;
diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
index 10b0624ade65..83147b7d836e 100644
--- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
@@ -439,9 +439,6 @@ struct smu_context
struct smu_baco_context smu_baco;
struct smu_temperature_range thermal_range;
void *od_settings;
-#if defined(CONFIG_DEBUG_FS)
- struct dentry *debugfs_sclk;
-#endif
struct smu_umd_pstate_table pstate_table;
uint32_t pstate_sclk;
--
2.30.0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] drm/radeon: cleanup debugfs
2021-02-10 16:06 [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Nirmoy Das
@ 2021-02-10 16:06 ` Nirmoy Das
2021-02-10 18:22 ` [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Christian König
1 sibling, 0 replies; 4+ messages in thread
From: Nirmoy Das @ 2021-02-10 16:06 UTC (permalink / raw)
To: Christian.Koenig; +Cc: Nirmoy Das, amd-gfx
Remove unwanted debugfs dentries and also radeon_ttm_debugfs_fini()
as drm_debugfs_cleanup() will recursively remove debugfs files.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/radeon/radeon.h | 5 -----
drivers/gpu/drm/radeon/radeon_ttm.c | 24 +++++-------------------
2 files changed, 5 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index f9f550784590..2c0e3e7c294d 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -454,11 +454,6 @@ struct radeon_surface_reg {
struct radeon_mman {
struct ttm_bo_device bdev;
bool initialized;
-
-#if defined(CONFIG_DEBUG_FS)
- struct dentry *vram;
- struct dentry *gtt;
-#endif
};
struct radeon_bo_list {
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 46bf835284f4..9d156b12d24c 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -55,7 +55,6 @@
#include "radeon_ttm.h"
static int radeon_ttm_debugfs_init(struct radeon_device *rdev);
-static void radeon_ttm_debugfs_fini(struct radeon_device *rdev);
struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
{
@@ -793,7 +792,7 @@ void radeon_ttm_fini(struct radeon_device *rdev)
if (!rdev->mman.initialized)
return;
- radeon_ttm_debugfs_fini(rdev);
+
if (rdev->stolen_vga_memory) {
r = radeon_bo_reserve(rdev->stolen_vga_memory, false);
if (r == 0) {
@@ -1009,12 +1008,11 @@ static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
struct drm_minor *minor = rdev->ddev->primary;
struct dentry *root = minor->debugfs_root;
- rdev->mman.vram = debugfs_create_file("radeon_vram", S_IFREG | S_IRUGO,
- root, rdev,
- &radeon_ttm_vram_fops);
+ debugfs_create_file("radeon_vram", S_IFREG | S_IRUGO, root, rdev,
+ &radeon_ttm_vram_fops);
- rdev->mman.gtt = debugfs_create_file("radeon_gtt", S_IFREG | S_IRUGO,
- root, rdev, &radeon_ttm_gtt_fops);
+ debugfs_create_file("radeon_gtt", S_IFREG | S_IRUGO, root, rdev,
+ &radeon_ttm_gtt_fops);
count = ARRAY_SIZE(radeon_ttm_debugfs_list);
@@ -1029,15 +1027,3 @@ static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
return 0;
#endif
}
-
-static void radeon_ttm_debugfs_fini(struct radeon_device *rdev)
-{
-#if defined(CONFIG_DEBUG_FS)
-
- debugfs_remove(rdev->mman.vram);
- rdev->mman.vram = NULL;
-
- debugfs_remove(rdev->mman.gtt);
- rdev->mman.gtt = NULL;
-#endif
-}
--
2.30.0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry
2021-02-10 16:06 [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Nirmoy Das
2021-02-10 16:06 ` [PATCH 2/2] drm/radeon: cleanup debugfs Nirmoy Das
@ 2021-02-10 18:22 ` Christian König
2021-02-10 19:50 ` Nirmoy
1 sibling, 1 reply; 4+ messages in thread
From: Christian König @ 2021-02-10 18:22 UTC (permalink / raw)
To: Nirmoy Das, Christian.Koenig; +Cc: amd-gfx
Am 10.02.21 um 17:06 schrieb Nirmoy Das:
> Cleanup unwanted debugfs dentries.
Maybe write unnecessary instead of unwanted.
>
> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 12 +++-----
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 34 ++++++++++-----------
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 4 ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +--
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 4 ---
> drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h | 3 --
> 7 files changed, 23 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index e0c797a5f739..e3d4d2dcb3a0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -797,10 +797,6 @@ struct amdgpu_device {
> struct amdgpu_i2c_chan *i2c_bus[AMDGPU_MAX_I2C_BUS];
> struct amdgpu_debugfs debugfs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
> unsigned debugfs_count;
> -#if defined(CONFIG_DEBUG_FS)
> - struct dentry *debugfs_preempt;
> - struct dentry *debugfs_regs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
> -#endif
> struct amdgpu_atif *atif;
> struct amdgpu_atcs atcs;
> struct mutex srbm_mutex;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> index 4c38c5771cbc..874522217b7c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> @@ -1228,7 +1228,6 @@ int amdgpu_debugfs_regs_init(struct amdgpu_device *adev)
> adev, debugfs_regs[i]);
> if (!i && !IS_ERR_OR_NULL(ent))
> i_size_write(ent->d_inode, adev->rmmio_size);
> - adev->debugfs_regs[i] = ent;
> }
>
> return 0;
> @@ -1592,21 +1591,20 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL,
> int amdgpu_debugfs_init(struct amdgpu_device *adev)
> {
> int r, i;
> + struct dentry *ent = NULL;
Please don't initialize the variables and sort them so that r and i are
last.
>
> - adev->debugfs_preempt =
> - debugfs_create_file("amdgpu_preempt_ib", 0600,
> + ent = debugfs_create_file("amdgpu_preempt_ib", 0600,
> adev_to_drm(adev)->primary->debugfs_root, adev,
> &fops_ib_preempt);
> - if (!(adev->debugfs_preempt)) {
> + if (!ent) {
> DRM_ERROR("unable to create amdgpu_preempt_ib debugsfs file\n");
> return -EIO;
> }
>
> - adev->smu.debugfs_sclk =
> - debugfs_create_file("amdgpu_force_sclk", 0200,
> + ent = debugfs_create_file("amdgpu_force_sclk", 0200,
> adev_to_drm(adev)->primary->debugfs_root, adev,
> &fops_sclk_set);
> - if (!(adev->smu.debugfs_sclk)) {
> + if (!ent) {
> DRM_ERROR("unable to create amdgpu_set_sclk debugsfs file\n");
> return -EIO;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> index 1fb2a91ad30a..1efdfb9b5506 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> @@ -1137,15 +1137,16 @@ static int amdgpu_ras_sysfs_remove_all(struct amdgpu_device *adev)
> *
> */
> /* debugfs begin */
> -static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
> +static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev,
> + struct dentry *dir)
> {
> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> struct drm_minor *minor = adev_to_drm(adev)->primary;
>
> - con->dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
> - debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, con->dir,
> + dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
> + debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, dir,
> adev, &amdgpu_ras_debugfs_ctrl_ops);
> - debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO, con->dir,
> + debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO, dir,
> adev, &amdgpu_ras_debugfs_eeprom_ops);
>
> /*
> @@ -1156,7 +1157,7 @@ static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
> * ERREVENT_ATHUB_INTERRUPT generated. Normal GPU recovery routine
> * will never be called.
> */
> - debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, con->dir,
> + debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, dir,
> &con->reboot);
>
> /*
> @@ -1164,16 +1165,16 @@ static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
> * of RAS IPs during ras recovery.
> */
> debugfs_create_bool("disable_ras_err_cnt_harvest", 0644,
> - con->dir, &con->disable_ras_err_cnt_harvest);
> + dir, &con->disable_ras_err_cnt_harvest);
> }
>
> static void amdgpu_ras_debugfs_create(struct amdgpu_device *adev,
> - struct ras_fs_if *head)
> + struct ras_fs_if *head,
> + struct dentry *dir)
> {
> - struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head->head);
>
> - if (!obj || obj->ent)
> + if (!obj || !dir)
> return;
>
> get_obj(obj);
> @@ -1182,9 +1183,8 @@ static void amdgpu_ras_debugfs_create(struct amdgpu_device *adev,
> head->debugfs_name,
> sizeof(obj->fs_data.debugfs_name));
>
> - obj->ent = debugfs_create_file(obj->fs_data.debugfs_name,
> - S_IWUGO | S_IRUGO, con->dir, obj,
> - &amdgpu_ras_debugfs_ops);
> + debugfs_create_file(obj->fs_data.debugfs_name, S_IWUGO | S_IRUGO, dir,
> + obj, &amdgpu_ras_debugfs_ops);
> }
>
> void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
> @@ -1192,6 +1192,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> struct ras_manager *obj;
> struct ras_fs_if fs_info;
> + struct dentry *dir = NULL;
>
> /*
> * it won't be called in resume path, no need to check
> @@ -1200,7 +1201,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
> if (!IS_ENABLED(CONFIG_DEBUG_FS) || !con)
> return;
>
> - amdgpu_ras_debugfs_create_ctrl_node(adev);
> + amdgpu_ras_debugfs_create_ctrl_node(adev, dir);
That won't work. You need to return the created directory here.
And please stop initializing variables if it isn't explicitly needed,
the compiler would have pointed out that there is something wrong here
without that.
>
> list_for_each_entry(obj, &con->head, node) {
> if (amdgpu_ras_is_supported(adev, obj->head.block) &&
> @@ -1208,7 +1209,7 @@ void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
> sprintf(fs_info.debugfs_name, "%s_err_inject",
> ras_block_str(obj->head.block));
> fs_info.head = obj->head;
> - amdgpu_ras_debugfs_create(adev, &fs_info);
> + amdgpu_ras_debugfs_create(adev, &fs_info, dir);
> }
> }
> }
> @@ -1218,10 +1219,9 @@ static void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev,
> {
> struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
>
> - if (!obj || !obj->ent)
> + if (!obj)
> return;
>
> - obj->ent = NULL;
> put_obj(obj);
> }
Is that function really doing anything any more? I don't think so.
Regards,
Christian.
>
> @@ -1233,8 +1233,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
> list_for_each_entry_safe(obj, tmp, &con->head, node) {
> amdgpu_ras_debugfs_remove(adev, &obj->head);
> }
> -
> - con->dir = NULL;
> }
> /* debugfs end */
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> index 762f5e46c007..aed0716efa5a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> @@ -318,8 +318,6 @@ struct amdgpu_ras {
> uint32_t supported;
> uint32_t features;
> struct list_head head;
> - /* debugfs */
> - struct dentry *dir;
> /* sysfs */
> struct device_attribute features_attr;
> struct bin_attribute badpages_attr;
> @@ -395,8 +393,6 @@ struct ras_manager {
> struct list_head node;
> /* the device */
> struct amdgpu_device *adev;
> - /* debugfs */
> - struct dentry *ent;
> /* sysfs */
> struct device_attribute sysfs_attr;
> int attr_inuse;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index aaad9e304ad9..f4d7cf60c262 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1788,7 +1788,7 @@ static void amdgpu_ttm_training_data_block_init(struct amdgpu_device *adev)
> (adev->gmc.mc_vram_size - GDDR6_MEM_TRAINING_OFFSET);
> ctx->train_data_size =
> GDDR6_MEM_TRAINING_DATA_SIZE_IN_BYTES;
> -
> +
> DRM_DEBUG("train_data_size:%llx,p2c_train_data_offset:%llx,c2p_train_data_offset:%llx.\n",
> ctx->train_data_size,
> ctx->p2c_train_data_offset,
> @@ -2560,11 +2560,11 @@ int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev)
> ttm_debugfs_entries[count].fops);
> if (IS_ERR(ent))
> return PTR_ERR(ent);
> +
> if (ttm_debugfs_entries[count].domain == TTM_PL_VRAM)
> i_size_write(ent->d_inode, adev->gmc.mc_vram_size);
> else if (ttm_debugfs_entries[count].domain == TTM_PL_TT)
> i_size_write(ent->d_inode, adev->gmc.gart_size);
> - adev->mman.debugfs_entries[count] = ent;
> }
>
> count = ARRAY_SIZE(amdgpu_ttm_debugfs_list);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> index 6c142455fc66..4df4cf2fd4dd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> @@ -68,10 +68,6 @@ struct amdgpu_mman {
> bool initialized;
> void __iomem *aper_base_kaddr;
>
> -#if defined(CONFIG_DEBUG_FS)
> - struct dentry *debugfs_entries[8];
> -#endif
> -
> /* buffer handling */
> const struct amdgpu_buffer_funcs *buffer_funcs;
> struct amdgpu_ring *buffer_funcs_ring;
> diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> index 10b0624ade65..83147b7d836e 100644
> --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
> @@ -439,9 +439,6 @@ struct smu_context
> struct smu_baco_context smu_baco;
> struct smu_temperature_range thermal_range;
> void *od_settings;
> -#if defined(CONFIG_DEBUG_FS)
> - struct dentry *debugfs_sclk;
> -#endif
>
> struct smu_umd_pstate_table pstate_table;
> uint32_t pstate_sclk;
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry
2021-02-10 18:22 ` [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Christian König
@ 2021-02-10 19:50 ` Nirmoy
0 siblings, 0 replies; 4+ messages in thread
From: Nirmoy @ 2021-02-10 19:50 UTC (permalink / raw)
To: Christian König, Nirmoy Das, Christian.Koenig; +Cc: amd-gfx
On 2/10/21 7:22 PM, Christian König wrote:
> Am 10.02.21 um 17:06 schrieb Nirmoy Das:
>> Cleanup unwanted debugfs dentries.
>
> Maybe write unnecessary instead of unwanted.
>
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 12 +++-----
>> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 34 ++++++++++-----------
>> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 4 ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +--
>> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 4 ---
>> drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h | 3 --
>> 7 files changed, 23 insertions(+), 42 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> index e0c797a5f739..e3d4d2dcb3a0 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> @@ -797,10 +797,6 @@ struct amdgpu_device {
>> struct amdgpu_i2c_chan *i2c_bus[AMDGPU_MAX_I2C_BUS];
>> struct amdgpu_debugfs debugfs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
>> unsigned debugfs_count;
>> -#if defined(CONFIG_DEBUG_FS)
>> - struct dentry *debugfs_preempt;
>> - struct dentry *debugfs_regs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
>> -#endif
>> struct amdgpu_atif *atif;
>> struct amdgpu_atcs atcs;
>> struct mutex srbm_mutex;
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
>> index 4c38c5771cbc..874522217b7c 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
>> @@ -1228,7 +1228,6 @@ int amdgpu_debugfs_regs_init(struct
>> amdgpu_device *adev)
>> adev, debugfs_regs[i]);
>> if (!i && !IS_ERR_OR_NULL(ent))
>> i_size_write(ent->d_inode, adev->rmmio_size);
>> - adev->debugfs_regs[i] = ent;
>> }
>> return 0;
>> @@ -1592,21 +1591,20 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL,
>> int amdgpu_debugfs_init(struct amdgpu_device *adev)
>> {
>> int r, i;
>> + struct dentry *ent = NULL;
>
> Please don't initialize the variables and sort them so that r and i
> are last.
>
>> - adev->debugfs_preempt =
>> - debugfs_create_file("amdgpu_preempt_ib", 0600,
>> + ent = debugfs_create_file("amdgpu_preempt_ib", 0600,
>> adev_to_drm(adev)->primary->debugfs_root, adev,
>> &fops_ib_preempt);
>> - if (!(adev->debugfs_preempt)) {
>> + if (!ent) {
>> DRM_ERROR("unable to create amdgpu_preempt_ib debugsfs
>> file\n");
>> return -EIO;
>> }
>> - adev->smu.debugfs_sclk =
>> - debugfs_create_file("amdgpu_force_sclk", 0200,
>> + ent = debugfs_create_file("amdgpu_force_sclk", 0200,
>> adev_to_drm(adev)->primary->debugfs_root, adev,
>> &fops_sclk_set);
>> - if (!(adev->smu.debugfs_sclk)) {
>> + if (!ent) {
>> DRM_ERROR("unable to create amdgpu_set_sclk debugsfs file\n");
>> return -EIO;
>> }
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> index 1fb2a91ad30a..1efdfb9b5506 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> @@ -1137,15 +1137,16 @@ static int amdgpu_ras_sysfs_remove_all(struct
>> amdgpu_device *adev)
>> *
>> */
>> /* debugfs begin */
>> -static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device
>> *adev)
>> +static void amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device
>> *adev,
>> + struct dentry *dir)
>> {
>> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
>> struct drm_minor *minor = adev_to_drm(adev)->primary;
>> - con->dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
>> - debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, con->dir,
>> + dir = debugfs_create_dir(RAS_FS_NAME, minor->debugfs_root);
>> + debugfs_create_file("ras_ctrl", S_IWUGO | S_IRUGO, dir,
>> adev, &amdgpu_ras_debugfs_ctrl_ops);
>> - debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO,
>> con->dir,
>> + debugfs_create_file("ras_eeprom_reset", S_IWUGO | S_IRUGO, dir,
>> adev, &amdgpu_ras_debugfs_eeprom_ops);
>> /*
>> @@ -1156,7 +1157,7 @@ static void
>> amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
>> * ERREVENT_ATHUB_INTERRUPT generated. Normal GPU recovery routine
>> * will never be called.
>> */
>> - debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, con->dir,
>> + debugfs_create_bool("auto_reboot", S_IWUGO | S_IRUGO, dir,
>> &con->reboot);
>> /*
>> @@ -1164,16 +1165,16 @@ static void
>> amdgpu_ras_debugfs_create_ctrl_node(struct amdgpu_device *adev)
>> * of RAS IPs during ras recovery.
>> */
>> debugfs_create_bool("disable_ras_err_cnt_harvest", 0644,
>> - con->dir, &con->disable_ras_err_cnt_harvest);
>> + dir, &con->disable_ras_err_cnt_harvest);
>> }
>> static void amdgpu_ras_debugfs_create(struct amdgpu_device *adev,
>> - struct ras_fs_if *head)
>> + struct ras_fs_if *head,
>> + struct dentry *dir)
>> {
>> - struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
>> struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head->head);
>> - if (!obj || obj->ent)
>> + if (!obj || !dir)
>> return;
>> get_obj(obj);
>> @@ -1182,9 +1183,8 @@ static void amdgpu_ras_debugfs_create(struct
>> amdgpu_device *adev,
>> head->debugfs_name,
>> sizeof(obj->fs_data.debugfs_name));
>> - obj->ent = debugfs_create_file(obj->fs_data.debugfs_name,
>> - S_IWUGO | S_IRUGO, con->dir, obj,
>> - &amdgpu_ras_debugfs_ops);
>> + debugfs_create_file(obj->fs_data.debugfs_name, S_IWUGO |
>> S_IRUGO, dir,
>> + obj, &amdgpu_ras_debugfs_ops);
>> }
>> void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev)
>> @@ -1192,6 +1192,7 @@ void amdgpu_ras_debugfs_create_all(struct
>> amdgpu_device *adev)
>> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
>> struct ras_manager *obj;
>> struct ras_fs_if fs_info;
>> + struct dentry *dir = NULL;
>> /*
>> * it won't be called in resume path, no need to check
>> @@ -1200,7 +1201,7 @@ void amdgpu_ras_debugfs_create_all(struct
>> amdgpu_device *adev)
>> if (!IS_ENABLED(CONFIG_DEBUG_FS) || !con)
>> return;
>> - amdgpu_ras_debugfs_create_ctrl_node(adev);
>> + amdgpu_ras_debugfs_create_ctrl_node(adev, dir);
>
> That won't work. You need to return the created directory here.
>
> And please stop initializing variables if it isn't explicitly needed,
> the compiler would have pointed out that there is something wrong here
> without that.
I keep repeating that.
>
>> list_for_each_entry(obj, &con->head, node) {
>> if (amdgpu_ras_is_supported(adev, obj->head.block) &&
>> @@ -1208,7 +1209,7 @@ void amdgpu_ras_debugfs_create_all(struct
>> amdgpu_device *adev)
>> sprintf(fs_info.debugfs_name, "%s_err_inject",
>> ras_block_str(obj->head.block));
>> fs_info.head = obj->head;
>> - amdgpu_ras_debugfs_create(adev, &fs_info);
>> + amdgpu_ras_debugfs_create(adev, &fs_info, dir);
>> }
>> }
>> }
>> @@ -1218,10 +1219,9 @@ static void amdgpu_ras_debugfs_remove(struct
>> amdgpu_device *adev,
>> {
>> struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
>> - if (!obj || !obj->ent)
>> + if (!obj)
>> return;
>> - obj->ent = NULL;
>> put_obj(obj);
>> }
>
> Is that function really doing anything any more? I don't think so.
Yes, not really.
Thanks Christian, I will send v2 fixing everything above.
Nirmoy
>
> Regards,
> Christian.
>
>> @@ -1233,8 +1233,6 @@ static void
>> amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
>> list_for_each_entry_safe(obj, tmp, &con->head, node) {
>> amdgpu_ras_debugfs_remove(adev, &obj->head);
>> }
>> -
>> - con->dir = NULL;
>> }
>> /* debugfs end */
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
>> index 762f5e46c007..aed0716efa5a 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
>> @@ -318,8 +318,6 @@ struct amdgpu_ras {
>> uint32_t supported;
>> uint32_t features;
>> struct list_head head;
>> - /* debugfs */
>> - struct dentry *dir;
>> /* sysfs */
>> struct device_attribute features_attr;
>> struct bin_attribute badpages_attr;
>> @@ -395,8 +393,6 @@ struct ras_manager {
>> struct list_head node;
>> /* the device */
>> struct amdgpu_device *adev;
>> - /* debugfs */
>> - struct dentry *ent;
>> /* sysfs */
>> struct device_attribute sysfs_attr;
>> int attr_inuse;
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index aaad9e304ad9..f4d7cf60c262 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -1788,7 +1788,7 @@ static void
>> amdgpu_ttm_training_data_block_init(struct amdgpu_device *adev)
>> (adev->gmc.mc_vram_size - GDDR6_MEM_TRAINING_OFFSET);
>> ctx->train_data_size =
>> GDDR6_MEM_TRAINING_DATA_SIZE_IN_BYTES;
>> -
>> +
>> DRM_DEBUG("train_data_size:%llx,p2c_train_data_offset:%llx,c2p_train_data_offset:%llx.\n",
>> ctx->train_data_size,
>> ctx->p2c_train_data_offset,
>> @@ -2560,11 +2560,11 @@ int amdgpu_ttm_debugfs_init(struct
>> amdgpu_device *adev)
>> ttm_debugfs_entries[count].fops);
>> if (IS_ERR(ent))
>> return PTR_ERR(ent);
>> +
>> if (ttm_debugfs_entries[count].domain == TTM_PL_VRAM)
>> i_size_write(ent->d_inode, adev->gmc.mc_vram_size);
>> else if (ttm_debugfs_entries[count].domain == TTM_PL_TT)
>> i_size_write(ent->d_inode, adev->gmc.gart_size);
>> - adev->mman.debugfs_entries[count] = ent;
>> }
>> count = ARRAY_SIZE(amdgpu_ttm_debugfs_list);
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> index 6c142455fc66..4df4cf2fd4dd 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
>> @@ -68,10 +68,6 @@ struct amdgpu_mman {
>> bool initialized;
>> void __iomem *aper_base_kaddr;
>> -#if defined(CONFIG_DEBUG_FS)
>> - struct dentry *debugfs_entries[8];
>> -#endif
>> -
>> /* buffer handling */
>> const struct amdgpu_buffer_funcs *buffer_funcs;
>> struct amdgpu_ring *buffer_funcs_ring;
>> diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
>> b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
>> index 10b0624ade65..83147b7d836e 100644
>> --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
>> +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h
>> @@ -439,9 +439,6 @@ struct smu_context
>> struct smu_baco_context smu_baco;
>> struct smu_temperature_range thermal_range;
>> void *od_settings;
>> -#if defined(CONFIG_DEBUG_FS)
>> - struct dentry *debugfs_sclk;
>> -#endif
>> struct smu_umd_pstate_table pstate_table;
>> uint32_t pstate_sclk;
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-02-10 19:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-10 16:06 [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Nirmoy Das
2021-02-10 16:06 ` [PATCH 2/2] drm/radeon: cleanup debugfs Nirmoy Das
2021-02-10 18:22 ` [PATCH 1/2] drm/amdgpu: do not keep debugfs dentry Christian König
2021-02-10 19:50 ` Nirmoy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.