diff options
| author | Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com> | 2022-04-05 13:00:13 -0400 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2023-06-09 09:48:42 -0400 | 
| commit | ea2d2f8ececdd4c778b66e19b82ce278dfc5e1c4 (patch) | |
| tree | e25d554abf3e7e7253dda0bf8d0950544621886b /drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | |
| parent | 6b7ec18b045ff524eab94340e18feefe9a783d2e (diff) | |
drm/amdgpu: detect current GPU memory partition mode
 - Add helpers to detect the current GPU memory partition.
 - Add current memory partition mode sysfs node.
Tested-by: Ori Messinger <Ori.Messinger@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 25 | 
1 files changed, 25 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 2f6d85090b55..c2e92664031b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -1200,6 +1200,24 @@ static ssize_t amdgpu_gfx_get_current_compute_partition(struct device *dev,  	return sysfs_emit(buf, "%s\n", partition_mode);  } +static ssize_t amdgpu_gfx_get_current_memory_partition(struct device *dev, +						struct device_attribute *addr, +						char *buf) +{ +	struct drm_device *ddev = dev_get_drvdata(dev); +	struct amdgpu_device *adev = drm_to_adev(ddev); +	enum amdgpu_memory_partition mode; +	static const char *partition_modes[] = { +		"UNKNOWN", "NPS1", "NPS2", "NPS4", "NPS8" +	}; +	BUILD_BUG_ON(ARRAY_SIZE(partition_modes) <= AMDGPU_NPS8_PARTITION_MODE); + +	mode = min((int)adev->gfx.funcs->query_mem_partition_mode(adev), +		AMDGPU_NPS8_PARTITION_MODE); + +	return sysfs_emit(buf, "%s\n", partition_modes[mode]); +} +  static ssize_t amdgpu_gfx_set_compute_partition(struct device *dev,  						struct device_attribute *addr,  						const char *buf, size_t count) @@ -1307,6 +1325,9 @@ static DEVICE_ATTR(current_compute_partition, S_IRUGO | S_IWUSR,  static DEVICE_ATTR(available_compute_partition, S_IRUGO,  		   amdgpu_gfx_get_available_compute_partition, NULL); +static DEVICE_ATTR(current_memory_partition, S_IRUGO, +		   amdgpu_gfx_get_current_memory_partition, NULL); +  int amdgpu_gfx_sysfs_init(struct amdgpu_device *adev)  {  	int r; @@ -1319,5 +1340,9 @@ int amdgpu_gfx_sysfs_init(struct amdgpu_device *adev)  	if (r)  		return r; +	r = device_create_file(adev->dev, &dev_attr_current_memory_partition); +	if (r) +		return r; +  	return 0;  } | 
