From: Mason <slash.tmp@free.fr>
To: stable@vger.kernel.org
Cc: LKML <linux-kernel@vger.kernel.org>,
Lukasz Majewski <l.majewski@samsung.com>,
Zhang Rui <rui.zhang@intel.com>
Subject: Requesting inclusion of 26bb0e9a in linux-3.14.y
Date: Tue, 21 Jul 2015 13:41:09 +0200 [thread overview]
Message-ID: <55AE2FD5.3000207@free.fr> (raw)
Hello,
This is my first time requesting inclusion of a patch, please
point out any breach of protocol.
I'm using linux-3.14.y and I've run into a bug fixed in later
kernel versions:
commit 26bb0e9a1a938ec98ee07aa76533f1a711fba706
Author: Lukasz Majewski <l.majewski@samsung.com>
Date: Wed Sep 24 10:27:10 2014 +0200
thermal: step_wise: fix: Prevent from binary overflow when trend is dropping
It turns out that some boards can have instance->lower greater than 0 and
when thermal trend is dropping it results with next_target equal to -1.
Since the next_target is defined as unsigned long it is interpreted as
0xFFFFFFFF and larger than instance->upper.
As a result the next_target is set to instance->upper which ramps up to
maximal cooling device target when the temperature is steadily decreasing.
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c
index f251521baaa2..6705a0d746b3 100644
--- a/drivers/thermal/step_wise.c
+++ b/drivers/thermal/step_wise.c
@@ -76,7 +76,7 @@ static unsigned long get_target_state(struct thermal_instance *instance,
next_target = instance->upper;
break;
case THERMAL_TREND_DROPPING:
- if (cur_state == instance->lower) {
+ if (cur_state <= instance->lower) {
if (!throttle)
next_target = THERMAL_NO_TARGET;
} else {
Here's the debug output on my board:
[ 21.301211] thermal thermal_zone0: last_temperature=0, current_temperature=51000
[ 21.308803] thermal thermal_zone0: Trip0[type=1,temp=70000]:trend=1,throttle=0
[ 21.316248] thermal cooling_device0: cur_state=0
[ 21.320957] thermal cooling_device0: old_target=-1, target=-1
[ 21.326755] thermal cooling_device0: zone0->target=4294967295
[ 21.332544] thermal cooling_device0: set to state 0
[ 34.349747] thermal thermal_zone0: last_temperature=51000, current_temperature=46000
[ 34.357830] thermal thermal_zone0: Trip0[type=1,temp=70000]:trend=2,throttle=0
[ 34.365254] thermal cooling_device0: cur_state=0
[ 34.369989] thermal cooling_device0: old_target=-1, target=4
[ 34.375740] thermal cooling_device0: zone0->target=4
[ 34.380867] thermal cooling_device0: set to state 4
Bug: raising the cooling state, despite the temperature dropping.
The .bind() call was
thermal_zone_bind_cooling_device(tz, 0, cdev, 4, 1);
(The intent being that, once the system is above the trip temp,
at least a little bit of cooling should be applied, always.)
cur_state = 0 is not equal to lower_state = 1
AFAICT, Lukasz's patch fixes that issue.
Regards.
next reply other threads:[~2015-07-21 11:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-21 11:41 Mason [this message]
2015-07-21 15:29 ` Requesting inclusion of 26bb0e9a in linux-3.14.y Greg KH
2015-07-27 9:07 ` Luis Henriques
2015-07-27 9:07 ` Luis Henriques
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=55AE2FD5.3000207@free.fr \
--to=slash.tmp@free.fr \
--cc=l.majewski@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rui.zhang@intel.com \
--cc=stable@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.