* [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node @ 2020-03-09 9:12 Stanley.Yang 2020-03-09 9:12 ` [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init Stanley.Yang 2020-03-09 15:36 ` [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Alex Deucher 0 siblings, 2 replies; 8+ messages in thread From: Stanley.Yang @ 2020-03-09 9:12 UTC (permalink / raw) To: amd-gfx Cc: Guchun.Chen, Tao Zhou, Stanley . Yang, john.clements, Dennis.Li, Hawking.Zhang From: Tao Zhou <tao.zhou1@amd.com> centralize all debugfs creation in one place for ras Signed-off-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> Change-Id: I7489ccb41dcf7a11ecc45313ad42940474999d81 --- drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 29 +++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 492960e7d5f0..422cdd1ce3ad 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1117,6 +1117,35 @@ void amdgpu_ras_debugfs_create(struct amdgpu_device *adev, &amdgpu_ras_debugfs_ops); } +void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev) +{ + struct amdgpu_ras *con = amdgpu_ras_get_context(adev); + struct ras_manager *obj, *tmp; + struct ras_fs_if fs_info; + + /* + * it won't be called in resume path, no need to check + * suspend and gpu reset status + */ + if (!con) + return; + + amdgpu_ras_debugfs_create_ctrl_node(adev); + + list_for_each_entry_safe(obj, tmp, &con->head, node) { + if (!obj) + continue; + + if (amdgpu_ras_is_supported(adev, obj->head.block) && + (obj->attr_inuse == 1)) { + 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); + } + } +} + void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev, struct ras_common_if *head) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h index a5fe29a9373e..55c3eceb390d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h @@ -592,6 +592,8 @@ int amdgpu_ras_sysfs_remove(struct amdgpu_device *adev, void amdgpu_ras_debugfs_create(struct amdgpu_device *adev, struct ras_fs_if *head); +void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); + void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev, struct ras_common_if *head); -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-09 9:12 [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Stanley.Yang @ 2020-03-09 9:12 ` Stanley.Yang 2020-03-09 9:20 ` Chen, Guchun 2020-03-10 13:23 ` Alex Deucher 2020-03-09 15:36 ` [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Alex Deucher 1 sibling, 2 replies; 8+ messages in thread From: Stanley.Yang @ 2020-03-09 9:12 UTC (permalink / raw) To: amd-gfx Cc: Guchun.Chen, Tao Zhou, Stanley . Yang, john.clements, Dennis.Li, Hawking.Zhang From: Tao Zhou <tao.zhou1@amd.com> and remove each ras IP's own debugfs creation Signed-off-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 --- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - 8 files changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index deca6343d0cc..1d513e4f9934 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, NULL, DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, amdgpu_debugfs_sclk_set, "%llu\n"); +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); int amdgpu_debugfs_init(struct amdgpu_device *adev) { int r, i; @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev) } } + amdgpu_ras_debugfs_create_all(adev); + return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, ARRAY_SIZE(amdgpu_debugfs_list)); } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 7403588684b3..d12bb4a35780 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev) int r; struct ras_fs_if fs_info = { .sysfs_name = "gfx_err_count", - .debugfs_name = "gfx_err_inject", }; struct ras_ih_if ih_info = { .cb = amdgpu_gfx_process_ras_data_cb, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c index 676c48c02d77..ead3dc572ec5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "mmhub_err_count", - .debugfs_name = "mmhub_err_inject", }; if (!adev->mmhub.ras_if) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c index 7d5c3a9de9ea..6201a5f4b4fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "pcie_bif_err_count", - .debugfs_name = "pcie_bif_err_inject", }; if (!adev->nbio.ras_if) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 422cdd1ce3ad..57af4ea8fb58 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1178,7 +1178,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev) static int amdgpu_ras_fs_init(struct amdgpu_device *adev) { amdgpu_ras_sysfs_create_feature_node(adev); - amdgpu_ras_debugfs_create_ctrl_node(adev); return 0; } @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, goto interrupt; } - amdgpu_ras_debugfs_create(adev, fs_info); - r = amdgpu_ras_sysfs_create(adev, fs_info); if (r) goto sysfs; @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, cleanup: amdgpu_ras_sysfs_remove(adev, ras_block); sysfs: - amdgpu_ras_debugfs_remove(adev, ras_block); if (ih_info->cb) amdgpu_ras_interrupt_remove_handler(adev, ih_info); interrupt: @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device *adev, return; amdgpu_ras_sysfs_remove(adev, ras_block); - amdgpu_ras_debugfs_remove(adev, ras_block); if (ih_info->cb) amdgpu_ras_interrupt_remove_handler(adev, ih_info); amdgpu_ras_feature_enable(adev, ras_block, 0); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c index 7854c053e85d..250a309e4dee 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; struct ras_fs_if fs_info = { .sysfs_name = "sdma_err_count", - .debugfs_name = "sdma_err_inject", }; if (!ih_info) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c index f4d40855147b..9dd51f0d2c11 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device *adev) int r; struct ras_fs_if fs_info = { .sysfs_name = "umc_err_count", - .debugfs_name = "umc_err_inject", }; struct ras_ih_if ih_info = { .cb = amdgpu_umc_process_ras_data_cb, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c index a54ce398ed77..0837f872741b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "xgmi_wafl_err_count", - .debugfs_name = "xgmi_wafl_err_inject", }; if (!adev->gmc.xgmi.supported || -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 8+ messages in thread
* RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-09 9:12 ` [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init Stanley.Yang @ 2020-03-09 9:20 ` Chen, Guchun 2020-03-09 10:15 ` Zhou1, Tao 2020-03-10 13:23 ` Alex Deucher 1 sibling, 1 reply; 8+ messages in thread From: Chen, Guchun @ 2020-03-09 9:20 UTC (permalink / raw) To: Yang, Stanley, amd-gfx@lists.freedesktop.org Cc: Yang, Stanley, Zhou1, Tao, Clements, John, Li, Dennis, Zhang, Hawking [AMD Public Use] Shall we need other codes to remove ras debugfs in debugfs_fini to avoid leak? Regards, Guchun -----Original Message----- From: Stanley.Yang <Stanley.Yang@amd.com> Sent: Monday, March 9, 2020 5:12 PM To: amd-gfx@lists.freedesktop.org Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Chen, Guchun <Guchun.Chen@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Clements, John <John.Clements@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Yang, Stanley <Stanley.Yang@amd.com> Subject: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init From: Tao Zhou <tao.zhou1@amd.com> and remove each ras IP's own debugfs creation Signed-off-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 --- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - 8 files changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c index deca6343d0cc..1d513e4f9934 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, NULL, DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, amdgpu_debugfs_sclk_set, "%llu\n"); +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); int amdgpu_debugfs_init(struct amdgpu_device *adev) { int r, i; @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev) } } + amdgpu_ras_debugfs_create_all(adev); + return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, ARRAY_SIZE(amdgpu_debugfs_list)); } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 7403588684b3..d12bb4a35780 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev) int r; struct ras_fs_if fs_info = { .sysfs_name = "gfx_err_count", - .debugfs_name = "gfx_err_inject", }; struct ras_ih_if ih_info = { .cb = amdgpu_gfx_process_ras_data_cb, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c index 676c48c02d77..ead3dc572ec5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "mmhub_err_count", - .debugfs_name = "mmhub_err_inject", }; if (!adev->mmhub.ras_if) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c index 7d5c3a9de9ea..6201a5f4b4fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "pcie_bif_err_count", - .debugfs_name = "pcie_bif_err_inject", }; if (!adev->nbio.ras_if) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 422cdd1ce3ad..57af4ea8fb58 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1178,7 +1178,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev) static int amdgpu_ras_fs_init(struct amdgpu_device *adev) { amdgpu_ras_sysfs_create_feature_node(adev); - amdgpu_ras_debugfs_create_ctrl_node(adev); return 0; } @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, goto interrupt; } - amdgpu_ras_debugfs_create(adev, fs_info); - r = amdgpu_ras_sysfs_create(adev, fs_info); if (r) goto sysfs; @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, cleanup: amdgpu_ras_sysfs_remove(adev, ras_block); sysfs: - amdgpu_ras_debugfs_remove(adev, ras_block); if (ih_info->cb) amdgpu_ras_interrupt_remove_handler(adev, ih_info); interrupt: @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device *adev, return; amdgpu_ras_sysfs_remove(adev, ras_block); - amdgpu_ras_debugfs_remove(adev, ras_block); if (ih_info->cb) amdgpu_ras_interrupt_remove_handler(adev, ih_info); amdgpu_ras_feature_enable(adev, ras_block, 0); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c index 7854c053e85d..250a309e4dee 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; struct ras_fs_if fs_info = { .sysfs_name = "sdma_err_count", - .debugfs_name = "sdma_err_inject", }; if (!ih_info) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c index f4d40855147b..9dd51f0d2c11 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device *adev) int r; struct ras_fs_if fs_info = { .sysfs_name = "umc_err_count", - .debugfs_name = "umc_err_inject", }; struct ras_ih_if ih_info = { .cb = amdgpu_umc_process_ras_data_cb, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c index a54ce398ed77..0837f872741b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct amdgpu_device *adev) }; struct ras_fs_if fs_info = { .sysfs_name = "xgmi_wafl_err_count", - .debugfs_name = "xgmi_wafl_err_inject", }; if (!adev->gmc.xgmi.supported || -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 8+ messages in thread
* RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-09 9:20 ` Chen, Guchun @ 2020-03-09 10:15 ` Zhou1, Tao 2020-03-10 6:33 ` Chen, Guchun 0 siblings, 1 reply; 8+ messages in thread From: Zhou1, Tao @ 2020-03-09 10:15 UTC (permalink / raw) To: Chen, Guchun, Yang, Stanley, amd-gfx@lists.freedesktop.org Cc: Yang, Stanley, Clements, John, Li, Dennis, Zhang, Hawking [AMD Public Use] We already have amdgpu_ras_debugfs_remove and amdgpu_ras_debugfs_remove_all. In fact, amdgpu_debugfs_fini has been dropped in the patch below, and we are also planning to delete amdgpu_ras_debugfs_remove and amdgpu_ras_debugfs_remove_all. drm/amdgpu: no need to clean debugfs at amdgpu drm_minor_unregister will invoke drm_debugfs_cleanup to clean all the child node under primary minor node. We don't need to invoke amdgpu_debugfs_fini and amdgpu_debugfs_regs_cleanup to clean agian. Otherwise, it will raise the NULL pointer like below. v2: remove all debugfs cleanup/fini code at amdgpu Signed-off-by: Yintian Tao <yttao@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Regards, Tao > -----Original Message----- > From: Chen, Guchun <Guchun.Chen@amd.com> > Sent: 2020年3月9日 17:21 > To: Yang, Stanley <Stanley.Yang@amd.com>; amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Li, Dennis > <Dennis.Li@amd.com>; Clements, John <John.Clements@amd.com>; Zhou1, > Tao <Tao.Zhou1@amd.com>; Yang, Stanley <Stanley.Yang@amd.com> > Subject: RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in > debugfs_init > > [AMD Public Use] > > Shall we need other codes to remove ras debugfs in debugfs_fini to avoid > leak? > > Regards, > Guchun > > -----Original Message----- > From: Stanley.Yang <Stanley.Yang@amd.com> > Sent: Monday, March 9, 2020 5:12 PM > To: amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Chen, Guchun > <Guchun.Chen@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Clements, > John <John.Clements@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; > Yang, Stanley <Stanley.Yang@amd.com> > Subject: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in > debugfs_init > > From: Tao Zhou <tao.zhou1@amd.com> > > and remove each ras IP's own debugfs creation > > Signed-off-by: Tao Zhou <tao.zhou1@amd.com> > Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> > Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - > 8 files changed, 3 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index deca6343d0cc..1d513e4f9934 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, > NULL, DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, > amdgpu_debugfs_sclk_set, "%llu\n"); > > +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); > int amdgpu_debugfs_init(struct amdgpu_device *adev) { > int r, i; > @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device > *adev) > } > } > > + amdgpu_ras_debugfs_create_all(adev); > + > return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, > ARRAY_SIZE(amdgpu_debugfs_list)); > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 7403588684b3..d12bb4a35780 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device > *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "gfx_err_count", > - .debugfs_name = "gfx_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_gfx_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > index 676c48c02d77..ead3dc572ec5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct > amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "mmhub_err_count", > - .debugfs_name = "mmhub_err_inject", > }; > > if (!adev->mmhub.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > index 7d5c3a9de9ea..6201a5f4b4fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device > *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "pcie_bif_err_count", > - .debugfs_name = "pcie_bif_err_inject", > }; > > if (!adev->nbio.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 422cdd1ce3ad..57af4ea8fb58 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -1178,7 +1178,6 @@ static void > amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev) static int > amdgpu_ras_fs_init(struct amdgpu_device *adev) { > amdgpu_ras_sysfs_create_feature_node(adev); > - amdgpu_ras_debugfs_create_ctrl_node(adev); > > return 0; > } > @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device > *adev, > goto interrupt; > } > > - amdgpu_ras_debugfs_create(adev, fs_info); > - > r = amdgpu_ras_sysfs_create(adev, fs_info); > if (r) > goto sysfs; > @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device > *adev, > cleanup: > amdgpu_ras_sysfs_remove(adev, ras_block); > sysfs: > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > interrupt: > @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device > *adev, > return; > > amdgpu_ras_sysfs_remove(adev, ras_block); > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > amdgpu_ras_feature_enable(adev, ras_block, 0); diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 7854c053e85d..250a309e4dee 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device > *adev, > struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; > struct ras_fs_if fs_info = { > .sysfs_name = "sdma_err_count", > - .debugfs_name = "sdma_err_inject", > }; > > if (!ih_info) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > index f4d40855147b..9dd51f0d2c11 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device > *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "umc_err_count", > - .debugfs_name = "umc_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_umc_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > index a54ce398ed77..0837f872741b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct > amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "xgmi_wafl_err_count", > - .debugfs_name = "xgmi_wafl_err_inject", > }; > > if (!adev->gmc.xgmi.supported || > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-09 10:15 ` Zhou1, Tao @ 2020-03-10 6:33 ` Chen, Guchun 0 siblings, 0 replies; 8+ messages in thread From: Chen, Guchun @ 2020-03-10 6:33 UTC (permalink / raw) To: Zhou1, Tao, Yang, Stanley, amd-gfx@lists.freedesktop.org Cc: Yang, Stanley, Clements, John, Li, Dennis, Zhang, Hawking [AMD Public Use] That's fine. These two patches are: Reviewed-by: Guchun Chen <guchun.chen@amd.com> Regards, Guchun -----Original Message----- From: Zhou1, Tao <Tao.Zhou1@amd.com> Sent: Monday, March 9, 2020 6:15 PM To: Chen, Guchun <Guchun.Chen@amd.com>; Yang, Stanley <Stanley.Yang@amd.com>; amd-gfx@lists.freedesktop.org Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Clements, John <John.Clements@amd.com>; Yang, Stanley <Stanley.Yang@amd.com> Subject: RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init [AMD Public Use] We already have amdgpu_ras_debugfs_remove and amdgpu_ras_debugfs_remove_all. In fact, amdgpu_debugfs_fini has been dropped in the patch below, and we are also planning to delete amdgpu_ras_debugfs_remove and amdgpu_ras_debugfs_remove_all. drm/amdgpu: no need to clean debugfs at amdgpu drm_minor_unregister will invoke drm_debugfs_cleanup to clean all the child node under primary minor node. We don't need to invoke amdgpu_debugfs_fini and amdgpu_debugfs_regs_cleanup to clean agian. Otherwise, it will raise the NULL pointer like below. v2: remove all debugfs cleanup/fini code at amdgpu Signed-off-by: Yintian Tao <yttao@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Regards, Tao > -----Original Message----- > From: Chen, Guchun <Guchun.Chen@amd.com> > Sent: 2020年3月9日 17:21 > To: Yang, Stanley <Stanley.Yang@amd.com>; > amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Li, Dennis > <Dennis.Li@amd.com>; Clements, John <John.Clements@amd.com>; Zhou1, > Tao <Tao.Zhou1@amd.com>; Yang, Stanley <Stanley.Yang@amd.com> > Subject: RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in > debugfs_init > > [AMD Public Use] > > Shall we need other codes to remove ras debugfs in debugfs_fini to > avoid leak? > > Regards, > Guchun > > -----Original Message----- > From: Stanley.Yang <Stanley.Yang@amd.com> > Sent: Monday, March 9, 2020 5:12 PM > To: amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Chen, Guchun > <Guchun.Chen@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Clements, John > <John.Clements@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Yang, Stanley > <Stanley.Yang@amd.com> > Subject: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in > debugfs_init > > From: Tao Zhou <tao.zhou1@amd.com> > > and remove each ras IP's own debugfs creation > > Signed-off-by: Tao Zhou <tao.zhou1@amd.com> > Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> > Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - > 8 files changed, 3 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index deca6343d0cc..1d513e4f9934 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, > NULL, DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, > amdgpu_debugfs_sclk_set, "%llu\n"); > > +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device > +*adev); > int amdgpu_debugfs_init(struct amdgpu_device *adev) { > int r, i; > @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device > *adev) > } > } > > + amdgpu_ras_debugfs_create_all(adev); > + > return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, > ARRAY_SIZE(amdgpu_debugfs_list)); } diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 7403588684b3..d12bb4a35780 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device > *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "gfx_err_count", > - .debugfs_name = "gfx_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_gfx_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > index 676c48c02d77..ead3dc572ec5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct amdgpu_device > *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "mmhub_err_count", > - .debugfs_name = "mmhub_err_inject", > }; > > if (!adev->mmhub.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > index 7d5c3a9de9ea..6201a5f4b4fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device > *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "pcie_bif_err_count", > - .debugfs_name = "pcie_bif_err_inject", > }; > > if (!adev->nbio.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 422cdd1ce3ad..57af4ea8fb58 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -1178,7 +1178,6 @@ static void > amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev) static int > amdgpu_ras_fs_init(struct amdgpu_device *adev) { > amdgpu_ras_sysfs_create_feature_node(adev); > - amdgpu_ras_debugfs_create_ctrl_node(adev); > > return 0; > } > @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device > *adev, > goto interrupt; > } > > - amdgpu_ras_debugfs_create(adev, fs_info); > - > r = amdgpu_ras_sysfs_create(adev, fs_info); > if (r) > goto sysfs; > @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device > *adev, > cleanup: > amdgpu_ras_sysfs_remove(adev, ras_block); > sysfs: > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > interrupt: > @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device > *adev, > return; > > amdgpu_ras_sysfs_remove(adev, ras_block); > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > amdgpu_ras_feature_enable(adev, ras_block, 0); diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 7854c053e85d..250a309e4dee 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device > *adev, > struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; > struct ras_fs_if fs_info = { > .sysfs_name = "sdma_err_count", > - .debugfs_name = "sdma_err_inject", > }; > > if (!ih_info) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > index f4d40855147b..9dd51f0d2c11 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device > *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "umc_err_count", > - .debugfs_name = "umc_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_umc_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > index a54ce398ed77..0837f872741b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct amdgpu_device > *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "xgmi_wafl_err_count", > - .debugfs_name = "xgmi_wafl_err_inject", > }; > > if (!adev->gmc.xgmi.supported || > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-09 9:12 ` [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init Stanley.Yang 2020-03-09 9:20 ` Chen, Guchun @ 2020-03-10 13:23 ` Alex Deucher 2020-03-11 1:57 ` Yang, Stanley 1 sibling, 1 reply; 8+ messages in thread From: Alex Deucher @ 2020-03-10 13:23 UTC (permalink / raw) To: Stanley.Yang Cc: Chen, Guchun, Tao Zhou, amd-gfx list, John Clements, Dennis Li, Hawking Zhang On Mon, Mar 9, 2020 at 5:12 AM Stanley.Yang <Stanley.Yang@amd.com> wrote: > > From: Tao Zhou <tao.zhou1@amd.com> > > and remove each ras IP's own debugfs creation > > Signed-off-by: Tao Zhou <tao.zhou1@amd.com> > Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> > Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - > 8 files changed, 3 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index deca6343d0cc..1d513e4f9934 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, NULL, > DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, > amdgpu_debugfs_sclk_set, "%llu\n"); > > +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); Can we put this in amdgpu_ras.h and include that instead? > int amdgpu_debugfs_init(struct amdgpu_device *adev) > { > int r, i; > @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev) > } > } > > + amdgpu_ras_debugfs_create_all(adev); > + > return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, > ARRAY_SIZE(amdgpu_debugfs_list)); > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 7403588684b3..d12bb4a35780 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "gfx_err_count", > - .debugfs_name = "gfx_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_gfx_process_ras_data_cb, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > index 676c48c02d77..ead3dc572ec5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "mmhub_err_count", > - .debugfs_name = "mmhub_err_inject", > }; > > if (!adev->mmhub.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > index 7d5c3a9de9ea..6201a5f4b4fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "pcie_bif_err_count", > - .debugfs_name = "pcie_bif_err_inject", > }; > > if (!adev->nbio.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 422cdd1ce3ad..57af4ea8fb58 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -1178,7 +1178,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev) > static int amdgpu_ras_fs_init(struct amdgpu_device *adev) > { > amdgpu_ras_sysfs_create_feature_node(adev); > - amdgpu_ras_debugfs_create_ctrl_node(adev); > > return 0; > } > @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, > goto interrupt; > } > > - amdgpu_ras_debugfs_create(adev, fs_info); > - > r = amdgpu_ras_sysfs_create(adev, fs_info); > if (r) > goto sysfs; > @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, > cleanup: > amdgpu_ras_sysfs_remove(adev, ras_block); > sysfs: > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > interrupt: > @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device *adev, > return; > > amdgpu_ras_sysfs_remove(adev, ras_block); > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > amdgpu_ras_feature_enable(adev, ras_block, 0); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 7854c053e85d..250a309e4dee 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, > struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; > struct ras_fs_if fs_info = { > .sysfs_name = "sdma_err_count", > - .debugfs_name = "sdma_err_inject", > }; > > if (!ih_info) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > index f4d40855147b..9dd51f0d2c11 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "umc_err_count", > - .debugfs_name = "umc_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_umc_process_ras_data_cb, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > index a54ce398ed77..0837f872741b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "xgmi_wafl_err_count", > - .debugfs_name = "xgmi_wafl_err_inject", > }; > > if (!adev->gmc.xgmi.supported || > -- > 2.17.1 > > _______________________________________________ > 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init 2020-03-10 13:23 ` Alex Deucher @ 2020-03-11 1:57 ` Yang, Stanley 0 siblings, 0 replies; 8+ messages in thread From: Yang, Stanley @ 2020-03-11 1:57 UTC (permalink / raw) To: Alex Deucher Cc: Chen, Guchun, Zhou1, Tao, amd-gfx list, Clements, John, Li, Dennis, Zhang, Hawking [AMD Official Use Only - Internal Distribution Only] Hi Alex, I will send another patch to make this change, because this patch is been pushed to branch. Regards, Stanley -----Original Message----- From: Alex Deucher <alexdeucher@gmail.com> Sent: Tuesday, March 10, 2020 9:23 PM To: Yang, Stanley <Stanley.Yang@amd.com> Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Chen, Guchun <Guchun.Chen@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements, John <John.Clements@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com> Subject: Re: [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init On Mon, Mar 9, 2020 at 5:12 AM Stanley.Yang <Stanley.Yang@amd.com> wrote: > > From: Tao Zhou <tao.zhou1@amd.com> > > and remove each ras IP's own debugfs creation > > Signed-off-by: Tao Zhou <tao.zhou1@amd.com> > Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> > Change-Id: If3d16862afa0d97abad183dd6e60478b34029e95 > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 5 ----- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 1 - > 8 files changed, 3 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index deca6343d0cc..1d513e4f9934 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -1315,6 +1315,7 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_ib_preempt, NULL, > DEFINE_SIMPLE_ATTRIBUTE(fops_sclk_set, NULL, > amdgpu_debugfs_sclk_set, "%llu\n"); > > +extern void amdgpu_ras_debugfs_create_all(struct amdgpu_device > +*adev); Can we put this in amdgpu_ras.h and include that instead? > int amdgpu_debugfs_init(struct amdgpu_device *adev) { > int r, i; > @@ -1387,6 +1388,8 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev) > } > } > > + amdgpu_ras_debugfs_create_all(adev); > + > return amdgpu_debugfs_add_files(adev, amdgpu_debugfs_list, > > ARRAY_SIZE(amdgpu_debugfs_list)); } diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 7403588684b3..d12bb4a35780 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -565,7 +565,6 @@ int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "gfx_err_count", > - .debugfs_name = "gfx_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_gfx_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > index 676c48c02d77..ead3dc572ec5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.c > @@ -32,7 +32,6 @@ int amdgpu_mmhub_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "mmhub_err_count", > - .debugfs_name = "mmhub_err_inject", > }; > > if (!adev->mmhub.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > index 7d5c3a9de9ea..6201a5f4b4fa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.c > @@ -30,7 +30,6 @@ int amdgpu_nbio_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "pcie_bif_err_count", > - .debugfs_name = "pcie_bif_err_inject", > }; > > if (!adev->nbio.ras_if) { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 422cdd1ce3ad..57af4ea8fb58 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -1178,7 +1178,6 @@ static void amdgpu_ras_debugfs_remove_all(struct > amdgpu_device *adev) static int amdgpu_ras_fs_init(struct > amdgpu_device *adev) { > amdgpu_ras_sysfs_create_feature_node(adev); > - amdgpu_ras_debugfs_create_ctrl_node(adev); > > return 0; > } > @@ -1882,8 +1881,6 @@ int amdgpu_ras_late_init(struct amdgpu_device *adev, > goto interrupt; > } > > - amdgpu_ras_debugfs_create(adev, fs_info); > - > r = amdgpu_ras_sysfs_create(adev, fs_info); > if (r) > goto sysfs; > @@ -1892,7 +1889,6 @@ int amdgpu_ras_late_init(struct amdgpu_device > *adev, > cleanup: > amdgpu_ras_sysfs_remove(adev, ras_block); > sysfs: > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > interrupt: > @@ -1909,7 +1905,6 @@ void amdgpu_ras_late_fini(struct amdgpu_device *adev, > return; > > amdgpu_ras_sysfs_remove(adev, ras_block); > - amdgpu_ras_debugfs_remove(adev, ras_block); > if (ih_info->cb) > amdgpu_ras_interrupt_remove_handler(adev, ih_info); > amdgpu_ras_feature_enable(adev, ras_block, 0); diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 7854c053e85d..250a309e4dee 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -93,7 +93,6 @@ int amdgpu_sdma_ras_late_init(struct amdgpu_device *adev, > struct ras_ih_if *ih_info = (struct ras_ih_if *)ras_ih_info; > struct ras_fs_if fs_info = { > .sysfs_name = "sdma_err_count", > - .debugfs_name = "sdma_err_inject", > }; > > if (!ih_info) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > index f4d40855147b..9dd51f0d2c11 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c > @@ -28,7 +28,6 @@ int amdgpu_umc_ras_late_init(struct amdgpu_device *adev) > int r; > struct ras_fs_if fs_info = { > .sysfs_name = "umc_err_count", > - .debugfs_name = "umc_err_inject", > }; > struct ras_ih_if ih_info = { > .cb = amdgpu_umc_process_ras_data_cb, diff --git > a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > index a54ce398ed77..0837f872741b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c > @@ -598,7 +598,6 @@ int amdgpu_xgmi_ras_late_init(struct amdgpu_device *adev) > }; > struct ras_fs_if fs_info = { > .sysfs_name = "xgmi_wafl_err_count", > - .debugfs_name = "xgmi_wafl_err_inject", > }; > > if (!adev->gmc.xgmi.supported || > -- > 2.17.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7CSt > anley.Yang%40amd.com%7C7bcd4010164046f818d408d7c4f63e27%7C3dd8961fe488 > 4e608e11a82d994e183d%7C0%7C0%7C637194434220278715&sdata=GSrYIyxHb6 > qQtGi1E%2BSkgF6q8nyC6uSKgO%2BWE7cxGm8%3D&reserved=0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node 2020-03-09 9:12 [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Stanley.Yang 2020-03-09 9:12 ` [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init Stanley.Yang @ 2020-03-09 15:36 ` Alex Deucher 1 sibling, 0 replies; 8+ messages in thread From: Alex Deucher @ 2020-03-09 15:36 UTC (permalink / raw) To: Stanley.Yang Cc: Chen, Guchun, Tao Zhou, amd-gfx list, John Clements, Dennis Li, Hawking Zhang On Mon, Mar 9, 2020 at 5:12 AM Stanley.Yang <Stanley.Yang@amd.com> wrote: > > From: Tao Zhou <tao.zhou1@amd.com> > > centralize all debugfs creation in one place for ras Might want to note that this is required to fix ras when the driver does not use the drm load and unload callbacks due to ordering issues with the drm device node. With that added: Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > > Signed-off-by: Tao Zhou <tao.zhou1@amd.com> > Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com> > Change-Id: I7489ccb41dcf7a11ecc45313ad42940474999d81 > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 29 +++++++++++++++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 2 ++ > 2 files changed, 31 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 492960e7d5f0..422cdd1ce3ad 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -1117,6 +1117,35 @@ void amdgpu_ras_debugfs_create(struct amdgpu_device *adev, > &amdgpu_ras_debugfs_ops); > } > > +void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev) > +{ > + struct amdgpu_ras *con = amdgpu_ras_get_context(adev); > + struct ras_manager *obj, *tmp; > + struct ras_fs_if fs_info; > + > + /* > + * it won't be called in resume path, no need to check > + * suspend and gpu reset status > + */ > + if (!con) > + return; > + > + amdgpu_ras_debugfs_create_ctrl_node(adev); > + > + list_for_each_entry_safe(obj, tmp, &con->head, node) { > + if (!obj) > + continue; > + > + if (amdgpu_ras_is_supported(adev, obj->head.block) && > + (obj->attr_inuse == 1)) { > + 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); > + } > + } > +} > + > void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev, > struct ras_common_if *head) > { > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h > index a5fe29a9373e..55c3eceb390d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h > @@ -592,6 +592,8 @@ int amdgpu_ras_sysfs_remove(struct amdgpu_device *adev, > void amdgpu_ras_debugfs_create(struct amdgpu_device *adev, > struct ras_fs_if *head); > > +void amdgpu_ras_debugfs_create_all(struct amdgpu_device *adev); > + > void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev, > struct ras_common_if *head); > > -- > 2.17.1 > > _______________________________________________ > 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-11 1:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-03-09 9:12 [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Stanley.Yang 2020-03-09 9:12 ` [PATCH 2/2] drm/amdgpu: call ras_debugfs_create_all in debugfs_init Stanley.Yang 2020-03-09 9:20 ` Chen, Guchun 2020-03-09 10:15 ` Zhou1, Tao 2020-03-10 6:33 ` Chen, Guchun 2020-03-10 13:23 ` Alex Deucher 2020-03-11 1:57 ` Yang, Stanley 2020-03-09 15:36 ` [PATCH 1/2] drm/amdgpu: add function to creat all ras debugfs node Alex Deucher
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox