| 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) |