diff options
author | Takashi Iwai <tiwai@suse.de> | 2018-09-12 06:58:43 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2019-01-11 01:25:54 -0500 |
commit | 118780066e30c34de3d9349710b51780bfa0ba83 (patch) | |
tree | fafdb878d3aed4cc3f53832b673240f764321918 | |
parent | 15f77c4ade3364106a3a397f0a8d6fce9d6a6326 (diff) |
drm/nouveau: Don't disable polling in fallback mode
When a fan is controlled via linear fallback without cstate, we
shouldn't stop polling. Otherwise it won't be adjusted again and
keeps running at an initial crazy pace.
Fixes: 800efb4c2857 ("drm/nouveau/drm/therm/fan: add a fallback if no fan control is specified in the vbios")
Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1103356
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107447
Reported-by: Thomas Blume <thomas.blume@suse.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Martin Peres <martin.peres@free.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c index 3695cde669f8..07914e36939e 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c | |||
@@ -132,11 +132,12 @@ nvkm_therm_update(struct nvkm_therm *therm, int mode) | |||
132 | duty = nvkm_therm_update_linear(therm); | 132 | duty = nvkm_therm_update_linear(therm); |
133 | break; | 133 | break; |
134 | case NVBIOS_THERM_FAN_OTHER: | 134 | case NVBIOS_THERM_FAN_OTHER: |
135 | if (therm->cstate) | 135 | if (therm->cstate) { |
136 | duty = therm->cstate; | 136 | duty = therm->cstate; |
137 | else | 137 | poll = false; |
138 | } else { | ||
138 | duty = nvkm_therm_update_linear_fallback(therm); | 139 | duty = nvkm_therm_update_linear_fallback(therm); |
139 | poll = false; | 140 | } |
140 | break; | 141 | break; |
141 | } | 142 | } |
142 | immd = false; | 143 | immd = false; |