Marcin Slusarz
2013-Feb-03 20:07 UTC
[Nouveau] [PATCH 1/3] drm/nouveau/therm: turn on a fan only when crossing threshold in positive direction
+ the same for shutdown threshold - seems impossible, but shutdown can fail.
Signed-off-by: Marcin Slusarz <marcin.slusarz at gmail.com>
---
drivers/gpu/drm/nouveau/core/subdev/therm/temp.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c
b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c
index bf9b3ce..8f27b44 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c
@@ -105,7 +105,7 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm,
return;
if (dir == NOUVEAU_THERM_THRS_FALLING)
- nv_info(therm, "temperature (%u C) went bellow the '%s'
threshold\n",
+ nv_info(therm, "temperature (%u C) went below the '%s'
threshold\n",
temperature, thresolds[thrs]);
else
nv_info(therm, "temperature (%u C) hit the '%s'
threshold\n",
@@ -114,8 +114,10 @@ void nouveau_therm_sensor_event(struct nouveau_therm
*therm,
active = (dir == NOUVEAU_THERM_THRS_RISING);
switch (thrs) {
case NOUVEAU_THERM_THRS_FANBOOST:
- nouveau_therm_fan_set(therm, true, 100);
- nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO);
+ if (active) {
+ nouveau_therm_fan_set(therm, true, 100);
+ nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO);
+ }
break;
case NOUVEAU_THERM_THRS_DOWNCLOCK:
if (priv->emergency.downclock)
@@ -126,7 +128,8 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm,
priv->emergency.pause(therm, active);
break;
case NOUVEAU_THERM_THRS_SHUTDOWN:
- orderly_poweroff(true);
+ if (active)
+ orderly_poweroff(true);
break;
case NOUVEAU_THERM_THRS_NR:
break;
--
1.8.1
Martin Peres
2013-Feb-04 12:22 UTC
[Nouveau] [PATCH 1/3] drm/nouveau/therm: turn on a fan only when crossing threshold in positive direction
On 03/02/2013 21:07, Marcin Slusarz wrote:> + the same for shutdown threshold - seems impossible, but shutdown can fail. > > Signed-off-by: Marcin Slusarz <marcin.slusarz at gmail.com>Looks good. Please add my signed-off-by Signed-off-by: Martin Peres <martin.peres at labri.fr>> --- > drivers/gpu/drm/nouveau/core/subdev/therm/temp.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c > index bf9b3ce..8f27b44 100644 > --- a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c > +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c > @@ -105,7 +105,7 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, > return; > > if (dir == NOUVEAU_THERM_THRS_FALLING) > - nv_info(therm, "temperature (%u C) went bellow the '%s' threshold\n", > + nv_info(therm, "temperature (%u C) went below the '%s' threshold\n", > temperature, thresolds[thrs]); > else > nv_info(therm, "temperature (%u C) hit the '%s' threshold\n", > @@ -114,8 +114,10 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, > active = (dir == NOUVEAU_THERM_THRS_RISING); > switch (thrs) { > case NOUVEAU_THERM_THRS_FANBOOST: > - nouveau_therm_fan_set(therm, true, 100); > - nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO); > + if (active) { > + nouveau_therm_fan_set(therm, true, 100); > + nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO); > + } > break; > case NOUVEAU_THERM_THRS_DOWNCLOCK: > if (priv->emergency.downclock) > @@ -126,7 +128,8 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, > priv->emergency.pause(therm, active); > break; > case NOUVEAU_THERM_THRS_SHUTDOWN: > - orderly_poweroff(true); > + if (active) > + orderly_poweroff(true); > break; > case NOUVEAU_THERM_THRS_NR: > break;
Possibly Parallel Threads
- [PATCH 0/5] Thermal management fixes
- [PATCH 1/2] drm/nouveau/therm: ack any pending IRQ at init
- [PATCH 2/2] drm/nouveau/therm: enable fan management by default
- [PATCH 1/4] pm/fan: drop the fan lock in fan_update() before rescheduling
- Lockup/panic caused by nouveau_fantog_update recursion