From: Thara Gopinath <thara.gopinath@linaro.org>
To: Amit Kucheria <amit.kucheria@linaro.org>,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
bjorn.andersson@linaro.org, swboyd@chromium.org,
j-keerthy@ti.com, Zhang Rui <rui.zhang@intel.com>,
Eduardo Valentin <edubezval@gmail.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Amit Kucheria <amit.kucheria@verdurent.com>
Cc: Ram Chandrasekar <rkumbako@codeaurora.org>,
Lina Iyer <ilina@codeaurora.org>,
linux-pm@vger.kernel.org
Subject: Re: [PATCH] drivers: thermal: step_wise: add support for hysteresis
Date: Thu, 21 Nov 2019 15:57:18 -0500 [thread overview]
Message-ID: <5DD6FA2E.9010704@linaro.org> (raw)
In-Reply-To: <8e812065f4a76325097c5f9c17f3386736d8c1d4.1574315190.git.amit.kucheria@linaro.org>
Hi Amit,
On 11/21/2019 12:50 AM, Amit Kucheria wrote:
> From: Ram Chandrasekar <rkumbako@codeaurora.org>
>
> Currently, step wise governor increases the mitigation when the
> temperature goes above a threshold and decreases the mitigation when the
> temperature goes below the threshold. If there is a case where the
> temperature is wavering around the threshold, the mitigation will be
> applied and removed every iteration, which is not very efficient.
>
> The use of hysteresis temperature could avoid this ping-pong of
> mitigation by relaxing the mitigation to happen only when the
> temperature goes below this lower hysteresis value.
>
> Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
> Signed-off-by: Lina Iyer <ilina@codeaurora.org>
> [Rebased patch from downstream]
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> ---
> drivers/thermal/step_wise.c | 35 ++++++++++++++++++++++++-----------
> 1 file changed, 24 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c
> index 6e051cbd824ff..2c8a34a7cf959 100644
> --- a/drivers/thermal/step_wise.c
> +++ b/drivers/thermal/step_wise.c
> @@ -24,7 +24,7 @@
> * for this trip point
> * d. if the trend is THERMAL_TREND_DROP_FULL, use lower limit
> * for this trip point
> - * If the temperature is lower than a trip point,
> + * If the temperature is lower than a hysteresis temperature,
> * a. if the trend is THERMAL_TREND_RAISING, do nothing
> * b. if the trend is THERMAL_TREND_DROPPING, use lower cooling
> * state for this trip point, if the cooling state already
> @@ -115,30 +115,31 @@ static void update_passive_instance(struct thermal_zone_device *tz,
>
> static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
> {
> - int trip_temp;
> + int trip_temp, hyst_temp;
> enum thermal_trip_type trip_type;
> enum thermal_trend trend;
> struct thermal_instance *instance;
> - bool throttle = false;
> + bool throttle;
There is no need to remove throttle = false here. You are setting it to
false later down.
> int old_target;
>
> if (trip == THERMAL_TRIPS_NONE) {
> - trip_temp = tz->forced_passive;
> + hyst_temp = trip_temp = tz->forced_passive;
> trip_type = THERMAL_TRIPS_NONE;
> } else {
> tz->ops->get_trip_temp(tz, trip, &trip_temp);
> + hyst_temp = trip_temp;
> + if (tz->ops->get_trip_hyst) {
> + tz->ops->get_trip_hyst(tz, trip, &hyst_temp);
> + hyst_temp = trip_temp - hyst_temp;
> + }
> tz->ops->get_trip_type(tz, trip, &trip_type);
> }
>
> trend = get_tz_trend(tz, trip);
>
> - if (tz->temperature >= trip_temp) {
> - throttle = true;
> - trace_thermal_zone_trip(tz, trip, trip_type);
> - }
> -
> - dev_dbg(&tz->device, "Trip%d[type=%d,temp=%d]:trend=%d,throttle=%d\n",
> - trip, trip_type, trip_temp, trend, throttle);
> + dev_dbg(&tz->device,
> + "Trip%d[type=%d,temp=%d,hyst=%d]:trend=%d,throttle=%d\n",
> + trip, trip_type, trip_temp, hyst_temp, trend, throttle);
throttle value is not final here. Why is the debug print and the setting
of throttle reversed ? Idea is to print the final value of
throttle.
>
> mutex_lock(&tz->lock);
>
> @@ -147,6 +148,18 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
> continue;
>
> old_target = instance->target;
> + throttle = false;
> + /*
> + * Lower the mitigation only if the temperature
> + * goes below the hysteresis temperature.
> + */
I think this requires more comment here on why there is a check for
old_target != THERMAL_NO_TARGET. Basically to ensure that the hysteresis
is considered only when temperature is dropping.
> + if (tz->temperature >= trip_temp ||
> + (tz->temperature >= hyst_temp &&
> + old_target != THERMAL_NO_TARGET)) {
> + throttle = true;
> + trace_thermal_zone_trip(tz, trip, trip_type);
> + }
> +
> instance->target = get_target_state(instance, trend, throttle);
> dev_dbg(&instance->cdev->device, "old_target=%d, target=%d\n",
> old_target, (int)instance->target);
>
--
Warm Regards
Thara
next prev parent reply other threads:[~2019-11-21 20:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-21 5:50 [PATCH] drivers: thermal: step_wise: add support for hysteresis Amit Kucheria
2019-11-21 14:09 ` Thara Gopinath
2019-11-21 14:38 ` Amit Kucheria
2019-11-21 21:07 ` Thara Gopinath
2019-11-21 20:57 ` Thara Gopinath [this message]
2019-12-10 6:51 ` Amit Kucheria
2019-12-11 13:35 ` Daniel Lezcano
2020-01-08 0:31 ` Ram Chandrasekar
2020-01-09 22:46 ` Daniel Lezcano
2020-01-24 17:13 ` Ram Chandrasekar
-- strict thread matches above, loose matches on Subject: below --
2018-05-07 17:54 Lina Iyer
2018-05-08 2:04 ` Daniel Lezcano
2018-05-09 16:25 ` Lina Iyer
2018-07-26 8:49 ` 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=5DD6FA2E.9010704@linaro.org \
--to=thara.gopinath@linaro.org \
--cc=amit.kucheria@linaro.org \
--cc=amit.kucheria@verdurent.com \
--cc=bjorn.andersson@linaro.org \
--cc=daniel.lezcano@linaro.org \
--cc=edubezval@gmail.com \
--cc=ilina@codeaurora.org \
--cc=j-keerthy@ti.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rkumbako@codeaurora.org \
--cc=rui.zhang@intel.com \
--cc=swboyd@chromium.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.