linux-uconsole/drivers/devfreq
Matthias Kaehlcke 6c619c5700 UPSTREAM: PM / devfreq: Fix handling of min/max_freq == 0
Commit ab8f58ad72 ("PM / devfreq: Set min/max_freq when adding the
devfreq device") initializes df->min/max_freq with the min/max OPP when
the device is added. Later commit f1d981eaec ("PM / devfreq: Use the
available min/max frequency") adds df->scaling_min/max_freq and the
following to the frequency adjustment code:

  max_freq = MIN(devfreq->scaling_max_freq, devfreq->max_freq);

With the current handling of min/max_freq this is incorrect:

Even though df->max_freq is now initialized to a value != 0 user space
can still set it to 0, in this case max_freq would be 0 instead of
df->scaling_max_freq as intended. In consequence the frequency adjustment
is not performed:

  if (max_freq && freq > max_freq) {
	freq = max_freq;

To fix this set df->min/max freq to the min/max OPP in max/max_freq_store,
when the user passes a value of 0. This also prevents df->max_freq from
being set below the min OPP when df->min_freq is 0, and similar for
min_freq. Since it is now guaranteed that df->min/max_freq can't be 0 the
checks for this case can be removed.

Fixes: f1d981eaec ("PM / devfreq: Use the available min/max frequency")
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
(cherry picked from commit df5cf4a361)

Change-Id: Ib8e2def7d3bf605dba81cf75bab89a23a39ca6f3
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2019-06-12 09:38:43 +08:00
..
event Merge remote branch 'android-4.19' of https://android.googlesource.com/kernel/common 2019-02-14 11:48:20 +08:00
devfreq-event.c PM / devfreq: Convert to using %pOF instead of full_name 2017-08-28 09:15:33 +09:00
devfreq.c UPSTREAM: PM / devfreq: Fix handling of min/max_freq == 0 2019-06-12 09:38:43 +08:00
exynos-bus.c PM / devfreq: Define the constant governor name 2017-10-26 17:08:40 +09:00
governor.h PM / devfreq: Move private devfreq_update_stats() into devfreq 2017-08-28 10:22:27 +09:00
governor_passive.c PM / devfreq: Define the constant governor name 2017-10-26 17:08:40 +09:00
governor_performance.c PM / devfreq: Define the constant governor name 2017-10-26 17:08:40 +09:00
governor_powersave.c PM / devfreq: Define the constant governor name 2017-10-26 17:08:40 +09:00
governor_simpleondemand.c PM / devfreq: Define the constant governor name 2017-10-26 17:08:40 +09:00
governor_userspace.c rk: revert to v4.4 2019-02-10 00:33:21 +08:00
Kconfig rk: revert to v4.4 2019-02-10 00:33:21 +08:00
Makefile rk: revert to v4.4 2019-02-10 00:33:21 +08:00
rk3399_dmc.c PM / devfreq: rk3399_dmc: Fix duplicated opp table on reload. 2018-07-18 13:58:39 +09:00
rockchip_bus.c PM / devfreq: rockchip_bus: Add support for rk3288, rk3368 and rk3399 2018-05-31 14:17:29 +08:00
rockchip_dmc.c PM / devfreq: rockchip_dmc: Don't adjust to user limits 2019-06-12 09:38:43 +08:00
tegra-devfreq.c rk: revert to v4.4 2019-02-10 00:33:21 +08:00