[PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info

Christian König ckoenig.leichtzumerken at gmail.com
Wed Jan 26 11:59:16 UTC 2022


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.koenig at 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)
 {
-- 
2.25.1



More information about the amd-gfx mailing list