blob: 7408d1ce678a18e20c4522e99905dadf29c2b329 [file] [log] [blame]
From jdelvare@suse.de Wed Jun 3 14:21:51 2015
From: Jean Delvare <jdelvare@suse.de>
Date: Mon, 20 Apr 2015 11:21:13 +0200
Subject: thermal: step_wise: Revert optimization
To: stable <stable@vger.kernel.org>
Cc: Shawn Guo <shawn.guo@linaro.org>, Eduardo Valentin <eduardo.valentin@ti.com>, Zhang Rui <rui.zhang@intel.com>, Borislav Petkov <bpetkov@suse.de>
Message-ID: <1429521673.4305.12.camel@chaos.site>
From: Jean Delvare <jdelvare@suse.de>
Commit 178c2490b99f898efc06d1ad75cadc84f13021a6 ("thermal: step_wise:
cdev only needs update on a new target state") broke driver acerhdf.
That driver abused the step_wise thermal governor until the bang_bang
governor was available, and the optimization broke this usage model.
Kernels v3.12 to v3.18 are affected. In v3.19 the acerhdf driver was
switched to the bang_bang governor and that solved the problem.
For kernels v3.12 to v3.17, the bang_bang governor isn't available
yet so the easiest fix is to revert the optimization.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reported-by: Dieter Jurzitza (https://bugzilla.opensuse.org/show_bug.cgi?id=925961)
Tested-by: Peter Feuerer <peter@piie.net>
Tested-by: Dieter Jurzitza
---
Please consider this patch for stable kernel branches from v3.12 to v3.17.
If anyone cares about v3.18, I think a better fix would be to backport
commit 48c8dd64345ba2a8c41556095c7adacb1c8af7c1 ("acerhdf: Use bang-bang
thermal governor") but it's too big for stable, so it's left to
distributions. So maybe this fix should make it into v3.18 stable as
well - I'll let whoever maintains that branch decide.
drivers/thermal/step_wise.c | 3 ---
1 file changed, 3 deletions(-)
--- a/drivers/thermal/step_wise.c
+++ b/drivers/thermal/step_wise.c
@@ -146,9 +146,6 @@ static void thermal_zone_trip_update(str
dev_dbg(&instance->cdev->device, "old_target=%d, target=%d\n",
old_target, (int)instance->target);
- if (old_target == instance->target)
- continue;
-
/* Activate a passive thermal instance */
if (old_target == THERMAL_NO_TARGET &&
instance->target != THERMAL_NO_TARGET)