diff options
Diffstat (limited to 'drivers/acpi/thermal.c')
| -rw-r--r-- | drivers/acpi/thermal.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 504385b1f211..84c795fb9b1e 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
| @@ -364,10 +364,17 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag) | |||
| 364 | if (flag & ACPI_TRIPS_CRITICAL) { | 364 | if (flag & ACPI_TRIPS_CRITICAL) { |
| 365 | status = acpi_evaluate_integer(tz->device->handle, | 365 | status = acpi_evaluate_integer(tz->device->handle, |
| 366 | "_CRT", NULL, &tz->trips.critical.temperature); | 366 | "_CRT", NULL, &tz->trips.critical.temperature); |
| 367 | if (ACPI_FAILURE(status)) { | 367 | /* |
| 368 | * Treat freezing temperatures as invalid as well; some | ||
| 369 | * BIOSes return really low values and cause reboots at startup. | ||
| 370 | * Below zero (Celcius) values clearly aren't right for sure.. | ||
| 371 | * ... so lets discard those as invalid. | ||
| 372 | */ | ||
| 373 | if (ACPI_FAILURE(status) || | ||
| 374 | tz->trips.critical.temperature <= 2732) { | ||
| 368 | tz->trips.critical.flags.valid = 0; | 375 | tz->trips.critical.flags.valid = 0; |
| 369 | ACPI_EXCEPTION((AE_INFO, status, | 376 | ACPI_EXCEPTION((AE_INFO, status, |
| 370 | "No critical threshold")); | 377 | "No or invalid critical threshold")); |
| 371 | return -ENODEV; | 378 | return -ENODEV; |
| 372 | } else { | 379 | } else { |
| 373 | tz->trips.critical.flags.valid = 1; | 380 | tz->trips.critical.flags.valid = 1; |
