[PATCH 2/2] drm/amdgpu: add sysfs files for XGMI segment size and physical node id
Luben Tuikov
luben.tuikov at amd.com
Wed Jan 26 12:55:07 UTC 2022
This seems reasonable. Hope it works out for umr.
Reviewed-by: Luben Tuikov <luben.tuikov at 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 at 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
More information about the amd-gfx
mailing list