drm/nouveau/therm: force a minimum hysteresis on temperature alarm thresholds
This should avoid the situation where a user gets its kernel logs flooded when temperature oscillates around a threshold with 0°C hysteresis. This patch is just meant to fix broken vbios (as reported on a nv4e on sysfs hwmon interface. Signed-off-by: Martin Peres <martin.peres@labri.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
f1aa4a1de5
commit
3600ad5e1b
|
@ -58,11 +58,18 @@ static void
|
||||||
nouveau_therm_temp_safety_checks(struct nouveau_therm *therm)
|
nouveau_therm_temp_safety_checks(struct nouveau_therm *therm)
|
||||||
{
|
{
|
||||||
struct nouveau_therm_priv *priv = (void *)therm;
|
struct nouveau_therm_priv *priv = (void *)therm;
|
||||||
|
struct nvbios_therm_sensor *s = &priv->bios_sensor;
|
||||||
|
|
||||||
if (!priv->bios_sensor.slope_div)
|
if (!priv->bios_sensor.slope_div)
|
||||||
priv->bios_sensor.slope_div = 1;
|
priv->bios_sensor.slope_div = 1;
|
||||||
if (!priv->bios_sensor.offset_den)
|
if (!priv->bios_sensor.offset_den)
|
||||||
priv->bios_sensor.offset_den = 1;
|
priv->bios_sensor.offset_den = 1;
|
||||||
|
|
||||||
|
/* enforce a minimum hysteresis on thresholds */
|
||||||
|
s->thrs_fan_boost.hysteresis = max_t(u8, s->thrs_fan_boost.hysteresis, 2);
|
||||||
|
s->thrs_down_clock.hysteresis = max_t(u8, s->thrs_down_clock.hysteresis, 2);
|
||||||
|
s->thrs_critical.hysteresis = max_t(u8, s->thrs_critical.hysteresis, 2);
|
||||||
|
s->thrs_shutdown.hysteresis = max_t(u8, s->thrs_shutdown.hysteresis, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* must be called with alarm_program_lock taken ! */
|
/* must be called with alarm_program_lock taken ! */
|
||||||
|
|
Loading…
Reference in New Issue