From 6b5033831febbe1c009b6713338cc9e417b45ceb Mon Sep 17 00:00:00 2001 From: Luben Tuikov Date: Thu, 17 Feb 2022 11:12:55 -0500 Subject: [PATCH] drm/amdgpu: Dynamically initialize IP instance attributes Dynamically initialize IP instance attributes. This eliminates bugs stemming from adding new attributes to an IP instance. Cc: Alex Deucher Reported-by: Tom StDenis Fixes: 4d7ba312dd1f ("drm/amdgpu: Add "harvest" to IP discovery sysfs") Signed-off-by: Luben Tuikov Acked-by: Alex Deucher Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index efa26225bc37..acd66a7b667a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c @@ -482,16 +482,7 @@ static struct ip_hw_instance_attr ip_hw_attr[] = { __ATTR_RO(base_addr), }; -static struct attribute *ip_hw_instance_attrs[] = { - &ip_hw_attr[0].attr, - &ip_hw_attr[1].attr, - &ip_hw_attr[2].attr, - &ip_hw_attr[3].attr, - &ip_hw_attr[4].attr, - &ip_hw_attr[5].attr, - &ip_hw_attr[6].attr, - NULL, -}; +static struct attribute *ip_hw_instance_attrs[ARRAY_SIZE(ip_hw_attr) + 1]; ATTRIBUTE_GROUPS(ip_hw_instance); #define to_ip_hw_instance(x) container_of(x, struct ip_hw_instance, kobj) @@ -789,7 +780,7 @@ static int amdgpu_discovery_sysfs_recurse(struct amdgpu_device *adev) static int amdgpu_discovery_sysfs_init(struct amdgpu_device *adev) { struct kset *die_kset; - int res; + int res, ii; adev->ip_top = kzalloc(sizeof(*adev->ip_top), GFP_KERNEL); if (!adev->ip_top) @@ -814,6 +805,10 @@ static int amdgpu_discovery_sysfs_init(struct amdgpu_device *adev) goto Err; } + for (ii = 0; ii < ARRAY_SIZE(ip_hw_attr); ii++) + ip_hw_instance_attrs[ii] = &ip_hw_attr[ii].attr; + ip_hw_instance_attrs[ii] = NULL; + res = amdgpu_discovery_sysfs_recurse(adev); return res; -- 2.11.0