All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Renninger <trenn@suse.de>
To: lenb@kernel.org
Cc: Thomas Renninger <trenn@suse.de>,
	clarkt@cnsp.com, linux-acpi@vger.kernel.org
Subject: [PATCH] ACPI thermal: Don't invalidate thermal zone if critical trip point is bad
Date: Sat, 20 Feb 2010 11:44:27 +0100	[thread overview]
Message-ID: <1266662667-3013-1-git-send-email-trenn@suse.de> (raw)
In-Reply-To: <1266357351-20224-1-git-send-email-trenn@suse.de>

V2: Corrected integer/long conversion.

Some BIOSes return a negative value for the critical trip point.
Especially since Windows 2006...
We currently invalidate the whole thermal zone in this case.
But it may still be needed for cooling, also without critical
trip point.

This patch invalidates the critical trip point if no _CRT
function is found or if it returns negative values, but does
not invalidate the whole thermal zone in this case.

Reference: http://bugzilla.novell.com/show_bug.cgi?id=531547

Signed-off-by: Thomas Renninger <trenn@suse.de>
Tested-by: clarkt@cnsp.com
CC: clarkt@cnsp.com
CC: Len Brown <lenb@kernel.org>
CC: linux-acpi@vger.kernel.org
---
 drivers/acpi/thermal.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 9073ada..77b8e1e 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -368,7 +368,7 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
 	int valid = 0;
 	int i;
 
-	/* Critical Shutdown (required) */
+	/* Critical Shutdown */
 	if (flag & ACPI_TRIPS_CRITICAL) {
 		status = acpi_evaluate_integer(tz->device->handle,
 				"_CRT", NULL, &tmp);
@@ -379,17 +379,19 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
 		 * Below zero (Celsius) values clearly aren't right for sure..
 		 * ... so lets discard those as invalid.
 		 */
-		if (ACPI_FAILURE(status) ||
-				tz->trips.critical.temperature <= 2732) {
+		if (ACPI_FAILURE(status)) {
+			tz->trips.critical.flags.valid = 0;
+			ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+					  "No critical threshold\n"));
+		} else if (tmp <= 2732) {
+			printk(KERN_WARNING FW_BUG "Invalid critical threshold "
+			       "(%llu)\n", tmp);
 			tz->trips.critical.flags.valid = 0;
-			ACPI_EXCEPTION((AE_INFO, status,
-					"No or invalid critical threshold"));
-			return -ENODEV;
 		} else {
 			tz->trips.critical.flags.valid = 1;
 			ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-					"Found critical threshold [%lu]\n",
-					tz->trips.critical.temperature));
+					  "Found critical threshold [%lu]\n",
+					  tz->trips.critical.temperature));
 		}
 		if (tz->trips.critical.flags.valid == 1) {
 			if (crt == -1) {
-- 
1.6.3


  parent reply	other threads:[~2010-02-20 10:44 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-16 21:55 [PATCH 1/2] ACPI thermal: Don't invalidate thermal zone if critical trip point is bad Thomas Renninger
2010-02-16 21:55 ` [PATCH 2/2] ACPI thermal: Check for thermal zone requirement Thomas Renninger
2010-02-19  6:39   ` [PATCH 2/2] ACPI thermal: Check for thermal zone requiremen Len Brown
2010-02-19 11:20     ` Thomas Renninger
2010-02-19 16:20       ` Len Brown
2010-02-19 16:37         ` Thomas Renninger
2010-02-20  4:57           ` Len Brown
2010-02-20  9:50             ` Thomas Renninger
2010-02-20 10:15         ` Thomas Renninger
2010-02-19  6:34 ` [PATCH 1/2] ACPI thermal: Don't invalidate thermal zone if critical trip point is bad Len Brown
2010-02-19  7:34   ` Len Brown
2010-02-20 10:20     ` [PATCH] " Thomas Renninger
2010-02-20 10:42       ` Thomas Renninger
2010-02-20 10:44 ` Thomas Renninger [this message]
2010-02-21  2:51   ` Zhang Rui
     [not found]     ` <201002220002.49341.trenn@suse.de>
2010-02-22  1:33       ` Zhang Rui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1266662667-3013-1-git-send-email-trenn@suse.de \
    --to=trenn@suse.de \
    --cc=clarkt@cnsp.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.