mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
drm/nouveau/hwmon: return EINVAL if the GPU is powered down for sensors reads
fixes bogus values userspace gets from hwmon while the GPU is powered down Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Rhys Kidd <rhyskidd@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
b0f84a84ff
commit
68bf8b5779
@ -428,6 +428,8 @@ nouveau_temp_read(struct device *dev, u32 attr, int channel, long *val)
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_temp_input:
|
||||
if (drm_dev->switch_power_state != DRM_SWITCH_POWER_ON)
|
||||
return -EINVAL;
|
||||
ret = nvkm_therm_temp_get(therm);
|
||||
*val = ret < 0 ? ret : (ret * 1000);
|
||||
break;
|
||||
@ -474,6 +476,8 @@ nouveau_fan_read(struct device *dev, u32 attr, int channel, long *val)
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_fan_input:
|
||||
if (drm_dev->switch_power_state != DRM_SWITCH_POWER_ON)
|
||||
return -EINVAL;
|
||||
*val = nvkm_therm_fan_sense(therm);
|
||||
break;
|
||||
default:
|
||||
@ -496,6 +500,8 @@ nouveau_in_read(struct device *dev, u32 attr, int channel, long *val)
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_in_input:
|
||||
if (drm_dev->switch_power_state != DRM_SWITCH_POWER_ON)
|
||||
return -EINVAL;
|
||||
ret = nvkm_volt_get(volt);
|
||||
*val = ret < 0 ? ret : (ret / 1000);
|
||||
break;
|
||||
@ -527,6 +533,8 @@ nouveau_pwm_read(struct device *dev, u32 attr, int channel, long *val)
|
||||
*val = therm->attr_get(therm, NVKM_THERM_ATTR_FAN_MODE);
|
||||
break;
|
||||
case hwmon_pwm_input:
|
||||
if (drm_dev->switch_power_state != DRM_SWITCH_POWER_ON)
|
||||
return -EINVAL;
|
||||
*val = therm->fan_get(therm);
|
||||
break;
|
||||
default:
|
||||
@ -548,6 +556,8 @@ nouveau_power_read(struct device *dev, u32 attr, int channel, long *val)
|
||||
|
||||
switch (attr) {
|
||||
case hwmon_power_input:
|
||||
if (drm_dev->switch_power_state != DRM_SWITCH_POWER_ON)
|
||||
return -EINVAL;
|
||||
*val = nvkm_iccsense_read_all(iccsense);
|
||||
break;
|
||||
case hwmon_power_max:
|
||||
|
Loading…
Reference in New Issue
Block a user