On 25-Feb-26 3:04 PM, Yang Wang wrote:
Limit GPU/MEM/VCN load sensor values to 0-100 range via clamp_t to ensure
validity.
Is this a workaround? If it's not within range, it indicates some
underlying issue.
Thanks,
Lijo
Signed-off-by: Yang Wang <[email protected]>
---
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
index 938361ecae05..86ef1ffbf1dd 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
@@ -1414,20 +1414,39 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct
device *dev,
static int amdgpu_pm_get_sensor_generic(struct amdgpu_device *adev,
enum amd_pp_sensors sensor,
- void *query)
+ uint32_t *val)
{
- int r, size = sizeof(uint32_t);
+ uint32_t tmp = UINT_MAX, size = sizeof(tmp);
+ int r;
+
+ if (!val)
+ return -EINVAL;
r = amdgpu_pm_get_access_if_active(adev);
if (r)
return r;
/* get the sensor value */
- r = amdgpu_dpm_read_sensor(adev, sensor, query, &size);
+ r = amdgpu_dpm_read_sensor(adev, sensor, (void *)&tmp, &size);
amdgpu_pm_put_access(adev);
- return r;
+ if (r)
+ return r;
+
+ switch (sensor) {
+ case AMDGPU_PP_SENSOR_GPU_LOAD:
+ case AMDGPU_PP_SENSOR_MEM_LOAD:
+ case AMDGPU_PP_SENSOR_VCN_LOAD:
+ tmp = clamp_t(uint32_t, tmp, 0, 100);
+ break;
+ default:
+ break;
+ }
+
+ *val = tmp;
+
+ return 0;
}
/**