All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info
@ 2022-01-26 11:59 Christian König
  2022-01-26 11:59 ` [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id Christian König
  2022-01-26 12:50 ` [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Luben Tuikov
  0 siblings, 2 replies; 6+ messages in thread
From: Christian König @ 2022-01-26 11:59 UTC (permalink / raw)
  To: Luben.Tuikov, Tom.StDenis; +Cc: amd-gfx

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@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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
  2022-01-26 11:59 [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Christian König
@ 2022-01-26 11:59 ` Christian König
  2022-01-26 12:55   ` Luben Tuikov
  2022-01-26 12:50 ` [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Luben Tuikov
  1 sibling, 1 reply; 6+ messages in thread
From: Christian König @ 2022-01-26 11:59 UTC (permalink / raw)
  To: Luben.Tuikov, Tom.StDenis; +Cc: amd-gfx

umr needs that to correctly calculate the VRAM base address
inside the MC address space.

Only compile tested!

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 34 ++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
index 68509f619ba3..21a5d07a1abf 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
@@ -252,6 +252,26 @@ static ssize_t amdgpu_xgmi_show_device_id(struct device *dev,
 
 }
 
+static ssize_t amdgpu_xgmi_show_node_segment_size(struct device *dev,
+						  struct device_attribute *attr,
+						  char *buf)
+{
+	struct drm_device *ddev = dev_get_drvdata(dev);
+	struct amdgpu_device *adev = drm_to_adev(ddev);
+
+	return sysfs_emit(buf, "%llu\n", adev->gmc.xgmi.node_segment_size);
+}
+
+static ssize_t amdgpu_xgmi_show_physical_node_id(struct device *dev,
+						 struct device_attribute *attr,
+						 char *buf)
+{
+	struct drm_device *ddev = dev_get_drvdata(dev);
+	struct amdgpu_device *adev = drm_to_adev(ddev);
+
+	return sysfs_emit(buf, "%u\n", adev->gmc.xgmi.physical_node_id);
+}
+
 #define AMDGPU_XGMI_SET_FICAA(o)	((o) | 0x456801)
 static ssize_t amdgpu_xgmi_show_error(struct device *dev,
 				      struct device_attribute *attr,
@@ -287,6 +307,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_node_segment_size, S_IRUGO,
+		   amdgpu_xgmi_show_node_segment_size, NULL);
+static DEVICE_ATTR(xgmi_physical_node_id, S_IRUGO,
+		   amdgpu_xgmi_show_physical_node_id, NULL);
 static DEVICE_ATTR(xgmi_error, S_IRUGO, amdgpu_xgmi_show_error, NULL);
 
 static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
@@ -295,6 +319,8 @@ static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
 	char node[10];
 
 	device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
+	device_remove_file(adev->dev, &dev_attr_xgmi_node_segment_size);
+	device_remove_file(adev->dev, &dev_attr_xgmi_physical_node_id);
 	device_remove_file(adev->dev, &dev_attr_xgmi_error);
 
 	if (hive->kobj.parent != (&adev->dev->kobj))
@@ -318,6 +344,14 @@ static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
 	if (r)
 		goto error;
 
+	r = device_create_file(adev->dev, &dev_attr_xgmi_node_segment_size);
+	if (r)
+		goto error;
+
+	r = device_create_file(adev->dev, &dev_attr_xgmi_physical_node_id);
+	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,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info
  2022-01-26 11:59 [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Christian König
  2022-01-26 11:59 ` [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id Christian König
@ 2022-01-26 12:50 ` Luben Tuikov
  1 sibling, 0 replies; 6+ messages in thread
From: Luben Tuikov @ 2022-01-26 12:50 UTC (permalink / raw)
  To: Christian König, Tom.StDenis; +Cc: amd-gfx

Yeah, that's cleaner.

Reviewed-by: Luben Tuikov <luben.tuikov@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.koenig@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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
  2022-01-26 11:59 ` [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id Christian König
@ 2022-01-26 12:55   ` Luben Tuikov
  2022-01-26 12:57     ` StDenis, Tom
  0 siblings, 1 reply; 6+ messages in thread
From: Luben Tuikov @ 2022-01-26 12:55 UTC (permalink / raw)
  To: Christian König, Tom.StDenis; +Cc: amd-gfx

This seems reasonable. Hope it works out for umr.

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

Regards,
Luben

On 2022-01-26 06:59, Christian König wrote:
> umr needs that to correctly calculate the VRAM base address
> inside the MC address space.
>
> Only compile tested!
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 34 ++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index 68509f619ba3..21a5d07a1abf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -252,6 +252,26 @@ static ssize_t amdgpu_xgmi_show_device_id(struct device *dev,
>  
>  }
>  
> +static ssize_t amdgpu_xgmi_show_node_segment_size(struct device *dev,
> +						  struct device_attribute *attr,
> +						  char *buf)
> +{
> +	struct drm_device *ddev = dev_get_drvdata(dev);
> +	struct amdgpu_device *adev = drm_to_adev(ddev);
> +
> +	return sysfs_emit(buf, "%llu\n", adev->gmc.xgmi.node_segment_size);
> +}
> +
> +static ssize_t amdgpu_xgmi_show_physical_node_id(struct device *dev,
> +						 struct device_attribute *attr,
> +						 char *buf)
> +{
> +	struct drm_device *ddev = dev_get_drvdata(dev);
> +	struct amdgpu_device *adev = drm_to_adev(ddev);
> +
> +	return sysfs_emit(buf, "%u\n", adev->gmc.xgmi.physical_node_id);
> +}
> +
>  #define AMDGPU_XGMI_SET_FICAA(o)	((o) | 0x456801)
>  static ssize_t amdgpu_xgmi_show_error(struct device *dev,
>  				      struct device_attribute *attr,
> @@ -287,6 +307,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_node_segment_size, S_IRUGO,
> +		   amdgpu_xgmi_show_node_segment_size, NULL);
> +static DEVICE_ATTR(xgmi_physical_node_id, S_IRUGO,
> +		   amdgpu_xgmi_show_physical_node_id, NULL);
>  static DEVICE_ATTR(xgmi_error, S_IRUGO, amdgpu_xgmi_show_error, NULL);
>  
>  static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
> @@ -295,6 +319,8 @@ static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
>  	char node[10];
>  
>  	device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
> +	device_remove_file(adev->dev, &dev_attr_xgmi_node_segment_size);
> +	device_remove_file(adev->dev, &dev_attr_xgmi_physical_node_id);
>  	device_remove_file(adev->dev, &dev_attr_xgmi_error);
>  
>  	if (hive->kobj.parent != (&adev->dev->kobj))
> @@ -318,6 +344,14 @@ static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
>  	if (r)
>  		goto error;
>  
> +	r = device_create_file(adev->dev, &dev_attr_xgmi_node_segment_size);
> +	if (r)
> +		goto error;
> +
> +	r = device_create_file(adev->dev, &dev_attr_xgmi_physical_node_id);
> +	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,

Regards,
-- 
Luben


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
  2022-01-26 12:55   ` Luben Tuikov
@ 2022-01-26 12:57     ` StDenis, Tom
  2022-02-09  8:51       ` Christian König
  0 siblings, 1 reply; 6+ messages in thread
From: StDenis, Tom @ 2022-01-26 12:57 UTC (permalink / raw)
  To: Tuikov, Luben, Christian König; +Cc: amd-gfx

[AMD Official Use Only]

Sadly I don't control any XGMI hosts to try it out.  So if they pick it up in their builds I can but otherwise we'll have to wait.

Tom

________________________________________
From: Tuikov, Luben <Luben.Tuikov@amd.com>
Sent: Wednesday, January 26, 2022 07:55
To: Christian König; StDenis, Tom
Cc: amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id

This seems reasonable. Hope it works out for umr.

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

Regards,
Luben

On 2022-01-26 06:59, Christian König wrote:
> umr needs that to correctly calculate the VRAM base address
> inside the MC address space.
>
> Only compile tested!
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 34 ++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index 68509f619ba3..21a5d07a1abf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -252,6 +252,26 @@ static ssize_t amdgpu_xgmi_show_device_id(struct device *dev,
>
>  }
>
> +static ssize_t amdgpu_xgmi_show_node_segment_size(struct device *dev,
> +                                               struct device_attribute *attr,
> +                                               char *buf)
> +{
> +     struct drm_device *ddev = dev_get_drvdata(dev);
> +     struct amdgpu_device *adev = drm_to_adev(ddev);
> +
> +     return sysfs_emit(buf, "%llu\n", adev->gmc.xgmi.node_segment_size);
> +}
> +
> +static ssize_t amdgpu_xgmi_show_physical_node_id(struct device *dev,
> +                                              struct device_attribute *attr,
> +                                              char *buf)
> +{
> +     struct drm_device *ddev = dev_get_drvdata(dev);
> +     struct amdgpu_device *adev = drm_to_adev(ddev);
> +
> +     return sysfs_emit(buf, "%u\n", adev->gmc.xgmi.physical_node_id);
> +}
> +
>  #define AMDGPU_XGMI_SET_FICAA(o)     ((o) | 0x456801)
>  static ssize_t amdgpu_xgmi_show_error(struct device *dev,
>                                     struct device_attribute *attr,
> @@ -287,6 +307,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_node_segment_size, S_IRUGO,
> +                amdgpu_xgmi_show_node_segment_size, NULL);
> +static DEVICE_ATTR(xgmi_physical_node_id, S_IRUGO,
> +                amdgpu_xgmi_show_physical_node_id, NULL);
>  static DEVICE_ATTR(xgmi_error, S_IRUGO, amdgpu_xgmi_show_error, NULL);
>
>  static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
> @@ -295,6 +319,8 @@ static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
>       char node[10];
>
>       device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
> +     device_remove_file(adev->dev, &dev_attr_xgmi_node_segment_size);
> +     device_remove_file(adev->dev, &dev_attr_xgmi_physical_node_id);
>       device_remove_file(adev->dev, &dev_attr_xgmi_error);
>
>       if (hive->kobj.parent != (&adev->dev->kobj))
> @@ -318,6 +344,14 @@ static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
>       if (r)
>               goto error;
>
> +     r = device_create_file(adev->dev, &dev_attr_xgmi_node_segment_size);
> +     if (r)
> +             goto error;
> +
> +     r = device_create_file(adev->dev, &dev_attr_xgmi_physical_node_id);
> +     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,

Regards,
--
Luben


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
  2022-01-26 12:57     ` StDenis, Tom
@ 2022-02-09  8:51       ` Christian König
  0 siblings, 0 replies; 6+ messages in thread
From: Christian König @ 2022-02-09  8:51 UTC (permalink / raw)
  To: StDenis, Tom, Andrey Grodzovsky; +Cc: Tuikov, Luben, amd-gfx

Can anybody give me a Tested-by for this set?

I would really like to push it, but it would be nice to have at least 
somebody with access to an xgmi system tries it first.

Christian.

Am 26.01.22 um 13:57 schrieb StDenis, Tom:
> [AMD Official Use Only]
>
> Sadly I don't control any XGMI hosts to try it out.  So if they pick it up in their builds I can but otherwise we'll have to wait.
>
> Tom
>
> ________________________________________
> From: Tuikov, Luben <Luben.Tuikov@amd.com>
> Sent: Wednesday, January 26, 2022 07:55
> To: Christian König; StDenis, Tom
> Cc: amd-gfx@lists.freedesktop.org
> Subject: Re: [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
>
> This seems reasonable. Hope it works out for umr.
>
> Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
>
> Regards,
> Luben
>
> On 2022-01-26 06:59, Christian König wrote:
>> umr needs that to correctly calculate the VRAM base address
>> inside the MC address space.
>>
>> Only compile tested!
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 34 ++++++++++++++++++++++++
>>   1 file changed, 34 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
>> index 68509f619ba3..21a5d07a1abf 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
>> @@ -252,6 +252,26 @@ static ssize_t amdgpu_xgmi_show_device_id(struct device *dev,
>>
>>   }
>>
>> +static ssize_t amdgpu_xgmi_show_node_segment_size(struct device *dev,
>> +                                               struct device_attribute *attr,
>> +                                               char *buf)
>> +{
>> +     struct drm_device *ddev = dev_get_drvdata(dev);
>> +     struct amdgpu_device *adev = drm_to_adev(ddev);
>> +
>> +     return sysfs_emit(buf, "%llu\n", adev->gmc.xgmi.node_segment_size);
>> +}
>> +
>> +static ssize_t amdgpu_xgmi_show_physical_node_id(struct device *dev,
>> +                                              struct device_attribute *attr,
>> +                                              char *buf)
>> +{
>> +     struct drm_device *ddev = dev_get_drvdata(dev);
>> +     struct amdgpu_device *adev = drm_to_adev(ddev);
>> +
>> +     return sysfs_emit(buf, "%u\n", adev->gmc.xgmi.physical_node_id);
>> +}
>> +
>>   #define AMDGPU_XGMI_SET_FICAA(o)     ((o) | 0x456801)
>>   static ssize_t amdgpu_xgmi_show_error(struct device *dev,
>>                                      struct device_attribute *attr,
>> @@ -287,6 +307,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_node_segment_size, S_IRUGO,
>> +                amdgpu_xgmi_show_node_segment_size, NULL);
>> +static DEVICE_ATTR(xgmi_physical_node_id, S_IRUGO,
>> +                amdgpu_xgmi_show_physical_node_id, NULL);
>>   static DEVICE_ATTR(xgmi_error, S_IRUGO, amdgpu_xgmi_show_error, NULL);
>>
>>   static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
>> @@ -295,6 +319,8 @@ static void amdgpu_xgmi_sysfs_rem_dev_info(struct amdgpu_device *adev,
>>        char node[10];
>>
>>        device_remove_file(adev->dev, &dev_attr_xgmi_device_id);
>> +     device_remove_file(adev->dev, &dev_attr_xgmi_node_segment_size);
>> +     device_remove_file(adev->dev, &dev_attr_xgmi_physical_node_id);
>>        device_remove_file(adev->dev, &dev_attr_xgmi_error);
>>
>>        if (hive->kobj.parent != (&adev->dev->kobj))
>> @@ -318,6 +344,14 @@ static int amdgpu_xgmi_sysfs_add_dev_info(struct amdgpu_device *adev,
>>        if (r)
>>                goto error;
>>
>> +     r = device_create_file(adev->dev, &dev_attr_xgmi_node_segment_size);
>> +     if (r)
>> +             goto error;
>> +
>> +     r = device_create_file(adev->dev, &dev_attr_xgmi_physical_node_id);
>> +     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,
> Regards,
> --
> Luben
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-02-09  8:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-26 11:59 [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Christian König
2022-01-26 11:59 ` [PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id Christian König
2022-01-26 12:55   ` Luben Tuikov
2022-01-26 12:57     ` StDenis, Tom
2022-02-09  8:51       ` Christian König
2022-01-26 12:50 ` [PATCH 1/2] drm/amdgpu: cleanup amdgpu_xgmi_sysfs_add_dev_info Luben Tuikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.