forked from Minki/linux
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> Acked-by: Christian König <christian.koenig@amd.com> Reviewed-by: Dennis Li <Dennis.Li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
b602ca5f31
commit
c3d4d45db2
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user