From: Luben Tuikov Date: Thu, 17 Feb 2022 16:12:55 +0000 (-0500) Subject: drm/amdgpu: Dynamically initialize IP instance attributes X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=6b5033831febbe1c009b6713338cc9e417b45ceb;p=linux.git 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 --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index efa26225bc373..acd66a7b667a1 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;