Add some error handling here: if a sensor returns an error code (a negative

Kelvin temperature, which is impossible except for some contrived magnetic
spin systems), use the previous measurement from that sensor instead of
corrupting everything and randomly changing the fans or shutting off the
machine.
This commit is contained in:
Nathan Whitehorn 2011-05-29 20:46:53 +00:00
parent d54e775e1e
commit d015abb774

View File

@ -94,13 +94,17 @@ pmac_therm_manage_fans(void)
struct pmac_fan_le *fan;
int average_excess, max_excess_zone, frac_excess;
int nsens, nsens_zone;
int temp;
if (!enable_pmac_thermal)
return;
/* Read all the sensors */
SLIST_FOREACH(sensor, &sensors, entries) {
sensor->last_val = sensor->sensor->read(sensor->sensor);
temp = sensor->sensor->read(sensor->sensor);
if (temp > 0) /* Use the previous temp in case of error */
sensor->last_val = temp;
if (sensor->last_val > sensor->sensor->max_temp) {
printf("WARNING: Current temperature (%s: %d.%d C) "
"exceeds critical temperature (%d.%d C)! "