* [PATCH] drm/amdgpu: clean up ras sysfs creation (v2)
@ 2020-09-24 14:51 Guchun Chen
2020-09-24 15:35 ` Christian König
2020-09-25 1:43 ` Li, Dennis
0 siblings, 2 replies; 3+ messages in thread
From: Guchun Chen @ 2020-09-24 14:51 UTC (permalink / raw)
To: amd-gfx, christian.koenig, Hawking.Zhang, Dennis.Li, Tao.Zhou1,
John.Clements, alexander.deucher, lijo.lazar
Cc: Guchun Chen
Merge ras sysfs creation together by calling sysfs_create_group
once, as sysfs_update_group may not work properly as expected.
v2: improve commit message
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 87 +++++++++----------------
1 file changed, 31 insertions(+), 56 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index e5ea14774c0c..6c57521b21fe 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1027,58 +1027,6 @@ static ssize_t amdgpu_ras_sysfs_features_read(struct device *dev,
return scnprintf(buf, PAGE_SIZE, "feature mask: 0x%x\n", con->features);
}
-static void amdgpu_ras_sysfs_add_bad_page_node(struct amdgpu_device *adev)
-{
- struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
- struct attribute_group group;
- struct bin_attribute *bin_attrs[] = {
- &con->badpages_attr,
- NULL,
- };
-
- con->badpages_attr = (struct bin_attribute) {
- .attr = {
- .name = "gpu_vram_bad_pages",
- .mode = S_IRUGO,
- },
- .size = 0,
- .private = NULL,
- .read = amdgpu_ras_sysfs_badpages_read,
- };
-
- group.name = RAS_FS_NAME;
- group.bin_attrs = bin_attrs;
-
- sysfs_bin_attr_init(bin_attrs[0]);
-
- sysfs_update_group(&adev->dev->kobj, &group);
-}
-
-static int amdgpu_ras_sysfs_create_feature_node(struct amdgpu_device *adev)
-{
- struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
- struct attribute *attrs[] = {
- &con->features_attr.attr,
- NULL
- };
- struct attribute_group group = {
- .name = RAS_FS_NAME,
- .attrs = attrs,
- };
-
- con->features_attr = (struct device_attribute) {
- .attr = {
- .name = "features",
- .mode = S_IRUGO,
- },
- .show = amdgpu_ras_sysfs_features_read,
- };
-
- sysfs_attr_init(attrs[0]);
-
- return sysfs_create_group(&adev->dev->kobj, &group);
-}
-
static void amdgpu_ras_sysfs_remove_bad_page_node(struct amdgpu_device *adev)
{
struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
@@ -1300,13 +1248,40 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
/* debugfs end */
/* ras fs */
-
+static BIN_ATTR(gpu_vram_bad_pages, S_IRUGO,
+ amdgpu_ras_sysfs_badpages_read, NULL, 0);
+static DEVICE_ATTR(features, S_IRUGO,
+ amdgpu_ras_sysfs_features_read, NULL);
static int amdgpu_ras_fs_init(struct amdgpu_device *adev)
{
- amdgpu_ras_sysfs_create_feature_node(adev);
+ struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
+ struct attribute_group group = {
+ .name = RAS_FS_NAME,
+ };
+ struct attribute *attrs[] = {
+ &con->features_attr.attr,
+ NULL
+ };
+ struct bin_attribute *bin_attrs[] = {
+ NULL,
+ NULL,
+ };
- if (amdgpu_bad_page_threshold != 0)
- amdgpu_ras_sysfs_add_bad_page_node(adev);
+ /* add features entry */
+ con->features_attr = dev_attr_features;
+ group.attrs = attrs;
+ sysfs_attr_init(attrs[0]);
+
+ if (amdgpu_bad_page_threshold != 0) {
+ /* add bad_page_features entry */
+ bin_attr_gpu_vram_bad_pages.private = NULL;
+ con->badpages_attr = bin_attr_gpu_vram_bad_pages;
+ bin_attrs[0] = &con->badpages_attr;
+ group.bin_attrs = bin_attrs;
+ sysfs_bin_attr_init(bin_attrs[0]);
+ }
+
+ sysfs_create_group(&adev->dev->kobj, &group);
return 0;
}
--
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] 3+ messages in thread
* Re: [PATCH] drm/amdgpu: clean up ras sysfs creation (v2)
2020-09-24 14:51 [PATCH] drm/amdgpu: clean up ras sysfs creation (v2) Guchun Chen
@ 2020-09-24 15:35 ` Christian König
2020-09-25 1:43 ` Li, Dennis
1 sibling, 0 replies; 3+ messages in thread
From: Christian König @ 2020-09-24 15:35 UTC (permalink / raw)
To: Guchun Chen, amd-gfx, Hawking.Zhang, Dennis.Li, Tao.Zhou1,
John.Clements, alexander.deucher, lijo.lazar
Am 24.09.20 um 16:51 schrieb Guchun Chen:
> Merge ras sysfs creation together by calling sysfs_create_group
> once, as sysfs_update_group may not work properly as expected.
>
> v2: improve commit message
>
> Signed-off-by: Guchun Chen <guchun.chen@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 87 +++++++++----------------
> 1 file changed, 31 insertions(+), 56 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> index e5ea14774c0c..6c57521b21fe 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> @@ -1027,58 +1027,6 @@ static ssize_t amdgpu_ras_sysfs_features_read(struct device *dev,
> return scnprintf(buf, PAGE_SIZE, "feature mask: 0x%x\n", con->features);
> }
>
> -static void amdgpu_ras_sysfs_add_bad_page_node(struct amdgpu_device *adev)
> -{
> - struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> - struct attribute_group group;
> - struct bin_attribute *bin_attrs[] = {
> - &con->badpages_attr,
> - NULL,
> - };
> -
> - con->badpages_attr = (struct bin_attribute) {
> - .attr = {
> - .name = "gpu_vram_bad_pages",
> - .mode = S_IRUGO,
> - },
> - .size = 0,
> - .private = NULL,
> - .read = amdgpu_ras_sysfs_badpages_read,
> - };
> -
> - group.name = RAS_FS_NAME;
> - group.bin_attrs = bin_attrs;
> -
> - sysfs_bin_attr_init(bin_attrs[0]);
> -
> - sysfs_update_group(&adev->dev->kobj, &group);
> -}
> -
> -static int amdgpu_ras_sysfs_create_feature_node(struct amdgpu_device *adev)
> -{
> - struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> - struct attribute *attrs[] = {
> - &con->features_attr.attr,
> - NULL
> - };
> - struct attribute_group group = {
> - .name = RAS_FS_NAME,
> - .attrs = attrs,
> - };
> -
> - con->features_attr = (struct device_attribute) {
> - .attr = {
> - .name = "features",
> - .mode = S_IRUGO,
> - },
> - .show = amdgpu_ras_sysfs_features_read,
> - };
> -
> - sysfs_attr_init(attrs[0]);
> -
> - return sysfs_create_group(&adev->dev->kobj, &group);
> -}
> -
> static void amdgpu_ras_sysfs_remove_bad_page_node(struct amdgpu_device *adev)
> {
> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> @@ -1300,13 +1248,40 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
> /* debugfs end */
>
> /* ras fs */
> -
> +static BIN_ATTR(gpu_vram_bad_pages, S_IRUGO,
> + amdgpu_ras_sysfs_badpages_read, NULL, 0);
> +static DEVICE_ATTR(features, S_IRUGO,
> + amdgpu_ras_sysfs_features_read, NULL);
> static int amdgpu_ras_fs_init(struct amdgpu_device *adev)
> {
> - amdgpu_ras_sysfs_create_feature_node(adev);
> + struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> + struct attribute_group group = {
> + .name = RAS_FS_NAME,
> + };
> + struct attribute *attrs[] = {
> + &con->features_attr.attr,
> + NULL
> + };
> + struct bin_attribute *bin_attrs[] = {
> + NULL,
> + NULL,
> + };
>
> - if (amdgpu_bad_page_threshold != 0)
> - amdgpu_ras_sysfs_add_bad_page_node(adev);
> + /* add features entry */
> + con->features_attr = dev_attr_features;
> + group.attrs = attrs;
> + sysfs_attr_init(attrs[0]);
> +
> + if (amdgpu_bad_page_threshold != 0) {
> + /* add bad_page_features entry */
> + bin_attr_gpu_vram_bad_pages.private = NULL;
> + con->badpages_attr = bin_attr_gpu_vram_bad_pages;
> + bin_attrs[0] = &con->badpages_attr;
> + group.bin_attrs = bin_attrs;
> + sysfs_bin_attr_init(bin_attrs[0]);
> + }
> +
> + sysfs_create_group(&adev->dev->kobj, &group);
>
> return 0;
> }
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] drm/amdgpu: clean up ras sysfs creation (v2)
2020-09-24 14:51 [PATCH] drm/amdgpu: clean up ras sysfs creation (v2) Guchun Chen
2020-09-24 15:35 ` Christian König
@ 2020-09-25 1:43 ` Li, Dennis
1 sibling, 0 replies; 3+ messages in thread
From: Li, Dennis @ 2020-09-25 1:43 UTC (permalink / raw)
To: Chen, Guchun, amd-gfx, Koenig, Christian, Zhang, Hawking, Zhou1,
Tao, Clements, John, Deucher, Alexander, Lazar, Lijo
[AMD Official Use Only - Internal Distribution Only]
Reviewed-by: Dennis Li <Dennis.Li@amd.com>
-----Original Message-----
From: Chen, Guchun <Guchun.Chen@amd.com>
Sent: Thursday, September 24, 2020 10:52 PM
To: amd-gfx@lists.freedesktop.org; Koenig, Christian <Christian.Koenig@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Clements, John <John.Clements@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Lazar, Lijo <Lijo.Lazar@amd.com>
Cc: Chen, Guchun <Guchun.Chen@amd.com>
Subject: [PATCH] drm/amdgpu: clean up ras sysfs creation (v2)
Merge ras sysfs creation together by calling sysfs_create_group once, as sysfs_update_group may not work properly as expected.
v2: improve commit message
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 87 +++++++++----------------
1 file changed, 31 insertions(+), 56 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index e5ea14774c0c..6c57521b21fe 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1027,58 +1027,6 @@ static ssize_t amdgpu_ras_sysfs_features_read(struct device *dev,
return scnprintf(buf, PAGE_SIZE, "feature mask: 0x%x\n", con->features); }
-static void amdgpu_ras_sysfs_add_bad_page_node(struct amdgpu_device *adev) -{
- struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
- struct attribute_group group;
- struct bin_attribute *bin_attrs[] = {
- &con->badpages_attr,
- NULL,
- };
-
- con->badpages_attr = (struct bin_attribute) {
- .attr = {
- .name = "gpu_vram_bad_pages",
- .mode = S_IRUGO,
- },
- .size = 0,
- .private = NULL,
- .read = amdgpu_ras_sysfs_badpages_read,
- };
-
- group.name = RAS_FS_NAME;
- group.bin_attrs = bin_attrs;
-
- sysfs_bin_attr_init(bin_attrs[0]);
-
- sysfs_update_group(&adev->dev->kobj, &group);
-}
-
-static int amdgpu_ras_sysfs_create_feature_node(struct amdgpu_device *adev) -{
- struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
- struct attribute *attrs[] = {
- &con->features_attr.attr,
- NULL
- };
- struct attribute_group group = {
- .name = RAS_FS_NAME,
- .attrs = attrs,
- };
-
- con->features_attr = (struct device_attribute) {
- .attr = {
- .name = "features",
- .mode = S_IRUGO,
- },
- .show = amdgpu_ras_sysfs_features_read,
- };
-
- sysfs_attr_init(attrs[0]);
-
- return sysfs_create_group(&adev->dev->kobj, &group);
-}
-
static void amdgpu_ras_sysfs_remove_bad_page_node(struct amdgpu_device *adev) {
struct amdgpu_ras *con = amdgpu_ras_get_context(adev); @@ -1300,13 +1248,40 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
/* debugfs end */
/* ras fs */
-
+static BIN_ATTR(gpu_vram_bad_pages, S_IRUGO,
+ amdgpu_ras_sysfs_badpages_read, NULL, 0); static
+DEVICE_ATTR(features, S_IRUGO,
+ amdgpu_ras_sysfs_features_read, NULL);
static int amdgpu_ras_fs_init(struct amdgpu_device *adev) {
- amdgpu_ras_sysfs_create_feature_node(adev);
+ struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
+ struct attribute_group group = {
+ .name = RAS_FS_NAME,
+ };
+ struct attribute *attrs[] = {
+ &con->features_attr.attr,
+ NULL
+ };
+ struct bin_attribute *bin_attrs[] = {
+ NULL,
+ NULL,
+ };
- if (amdgpu_bad_page_threshold != 0)
- amdgpu_ras_sysfs_add_bad_page_node(adev);
+ /* add features entry */
+ con->features_attr = dev_attr_features;
+ group.attrs = attrs;
+ sysfs_attr_init(attrs[0]);
+
+ if (amdgpu_bad_page_threshold != 0) {
+ /* add bad_page_features entry */
+ bin_attr_gpu_vram_bad_pages.private = NULL;
+ con->badpages_attr = bin_attr_gpu_vram_bad_pages;
+ bin_attrs[0] = &con->badpages_attr;
+ group.bin_attrs = bin_attrs;
+ sysfs_bin_attr_init(bin_attrs[0]);
+ }
+
+ sysfs_create_group(&adev->dev->kobj, &group);
return 0;
}
--
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] 3+ messages in thread
end of thread, other threads:[~2020-09-25 1:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-24 14:51 [PATCH] drm/amdgpu: clean up ras sysfs creation (v2) Guchun Chen
2020-09-24 15:35 ` Christian König
2020-09-25 1:43 ` Li, Dennis
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.