Yeah, that's cleaner.

Reviewed-by: Luben Tuikov <luben.tui...@amd.com>

Regards,
Luben

On 2022-01-26 06:59, Christian König wrote:
> Don't initialize variables if it isn't absolutely necessary.
>
> Use amdgpu_xgmi_sysfs_rem_dev_info to cleanup when something goes wrong.
>
> Drop the explicit warnings since the sysfs core warns about things like
> duplicate files itself.
>
> Signed-off-by: Christian König <christian.koe...@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 85 +++++++++---------------
>  1 file changed, 33 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index 5929d6f528c9..68509f619ba3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -289,61 +289,10 @@ static ssize_t amdgpu_xgmi_show_error(struct device 
> *dev,
>  static DEVICE_ATTR(xgmi_device_id, S_IRUGO, amdgpu_xgmi_show_device_id, 
> NULL);
>  static DEVICE_ATTR(xgmi_error, S_IRUGO, amdgpu_xgmi_show_error, NULL);
>  
> -static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
> -                                      struct amdgpu_hive_info *hive)
> -{
> -     int ret = 0;
> -     char node[10] = { 0 };
> -
> -     /* Create xgmi device id file */
> -     ret = device_create_file(adev->dev, &dev_attr_xgmi_device_id);
> -     if (ret) {
> -             dev_err(adev->dev, "XGMI: Failed to create device file 
> xgmi_device_id\n");
> -             return ret;
> -     }
> -
> -     /* Create xgmi error file */
> -     ret = device_create_file(adev->dev, &dev_attr_xgmi_error);
> -     if (ret)
> -             pr_err("failed to create xgmi_error\n");
> -
> -
> -     /* Create sysfs link to hive info folder on the first device */
> -     if (hive->kobj.parent != (&adev->dev->kobj)) {
> -             ret = sysfs_create_link(&adev->dev->kobj, &hive->kobj,
> -                                     "xgmi_hive_info");
> -             if (ret) {
> -                     dev_err(adev->dev, "XGMI: Failed to create link to hive 
> info");
> -                     goto remove_file;
> -             }
> -     }
> -
> -     sprintf(node, "node%d", atomic_read(&hive->number_devices));
> -     /* Create sysfs link form the hive folder to yourself */
> -     ret = sysfs_create_link(&hive->kobj, &adev->dev->kobj, node);
> -     if (ret) {
> -             dev_err(adev->dev, "XGMI: Failed to create link from hive 
> info");
> -             goto remove_link;
> -     }
> -
> -     goto success;
> -
> -
> -remove_link:
> -     sysfs_remove_link(&adev->dev->kobj, adev_to_drm(adev)->unique);
> -
> -remove_file:
> -     device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
> -
> -success:
> -     return ret;
> -}
> -
>  static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
>                                         struct amdgpu_hive_info *hive)
>  {
>       char node[10];
> -     memset(node, 0, sizeof(node));
>  
>       device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
>       device_remove_file(adev->dev, &dev_attr_xgmi_error);
> @@ -353,10 +302,42 @@ static void amdgpu_xgmi_sysfs_rem_dev_info(struct 
> amdgpu_device *adev,
>  
>       sprintf(node, "node%d", atomic_read(&hive->number_devices));
>       sysfs_remove_link(&hive->kobj, node);
> -
>  }
>  
> +static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
> +                                      struct amdgpu_hive_info *hive)
> +{
> +     char node[10];
> +     int r;
> +
> +     r = device_create_file(adev->dev, &dev_attr_xgmi_device_id);
> +     if (r)
> +             return r;
> +
> +     r = device_create_file(adev->dev, &dev_attr_xgmi_error);
> +     if (r)
> +             goto error;
>  
> +     /* Create sysfs link to hive info folder on the first device */
> +     if (hive->kobj.parent != (&adev->dev->kobj)) {
> +             r = sysfs_create_link(&adev->dev->kobj, &hive->kobj,
> +                                   "xgmi_hive_info");
> +             if (r)
> +                     goto error;
> +     }
> +
> +     /* Create sysfs link form the hive folder to yourself */
> +     sprintf(node, "node%d", atomic_read(&hive->number_devices));
> +     r = sysfs_create_link(&hive->kobj, &adev->dev->kobj, node);
> +     if (r)
> +             goto error;
> +
> +     return 0;
> +
> +error:
> +     amdgpu_xgmi_sysfs_rem_dev_info(adev, hive);
> +     return r;
> +}
>  
>  struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev)
>  {

Regards,
-- 
Luben

Reply via email to