diff options
| author | Mario Limonciello <[email protected]> | 2023-08-10 05:32:02 -0500 | 
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2023-08-15 18:08:30 -0400 | 
| commit | 15419813f2ef8b810bf2e11f5b2269acf776cb44 (patch) | |
| tree | fac170b86051acb03bf6e01efa38fe092a2e4453 /drivers/gpu/drm/amd/pm/amdgpu_pm.c | |
| parent | 9366c2e87d08b88332a363adc537962ba3840fd9 (diff) | |
drm/amd: Hide unsupported power attributes
Some ASICS only offer one type of power attribute, so in the visible
callback check whether the attributes are supported and hide if not
supported.
Signed-off-by: Mario Limonciello <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/pm/amdgpu_pm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/pm/amdgpu_pm.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c index 8133d968f75b..5b1d73b00ef7 100644 --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c @@ -3179,6 +3179,7 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,  	struct amdgpu_device *adev = dev_get_drvdata(dev);  	umode_t effective_mode = attr->mode;  	uint32_t gc_ver = adev->ip_versions[GC_HWIP][0]; +	uint32_t tmp;  	/* under multi-vf mode, the hwmon attributes are all not supported */  	if (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev)) @@ -3264,6 +3265,14 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,  	    (attr == &sensor_dev_attr_power1_average.dev_attr.attr))  		return 0; +	/* not all products support both average and instantaneous */ +	if (attr == &sensor_dev_attr_power1_average.dev_attr.attr && +	    amdgpu_hwmon_get_sensor_generic(adev, AMDGPU_PP_SENSOR_GPU_AVG_POWER, (void *)&tmp) == -EOPNOTSUPP) +		return 0; +	if (attr == &sensor_dev_attr_power1_input.dev_attr.attr && +	    amdgpu_hwmon_get_sensor_generic(adev, AMDGPU_PP_SENSOR_GPU_INPUT_POWER, (void *)&tmp) == -EOPNOTSUPP) +		return 0; +  	/* hide max/min values if we can't both query and manage the fan */  	if (((amdgpu_dpm_set_fan_speed_pwm(adev, U32_MAX) == -EOPNOTSUPP) &&  	      (amdgpu_dpm_get_fan_speed_pwm(adev, NULL) == -EOPNOTSUPP) &&  |