diff mbox series

[-,stable,v5.4,and,v5.7] opp: Enable resources again if they were disabled earlier

Message ID 31f315cf2b0c4afd60b07b7121058dcaa6e4afa1.1598260882.git.viresh.kumar@linaro.org
State New
Headers show
Series [-,stable,v5.4,and,v5.7] opp: Enable resources again if they were disabled earlier | expand

Commit Message

Viresh Kumar Aug. 24, 2020, 9:22 a.m. UTC
From: Rajendra Nayak <rnayak@codeaurora.org>


commit a4501bac0e553bed117b7e1b166d49731caf7260 upstream.

dev_pm_opp_set_rate() can now be called with freq = 0 in order
to either drop performance or bandwidth votes or to disable
regulators on platforms which support them.

In such cases, a subsequent call to dev_pm_opp_set_rate() with
the same frequency ends up returning early because 'old_freq == freq'

Instead make it fall through and put back the dropped performance
and bandwidth votes and/or enable back the regulators.

Cc: v5.3+ <stable@vger.kernel.org> # v5.3+
Fixes: cd7ea582866f ("opp: Make dev_pm_opp_set_rate() handle freq = 0 to drop performance votes")
Reported-by: Sajida Bhanu <sbhanu@codeaurora.org>
Reviewed-by: Sibi Sankar <sibis@codeaurora.org>

Reported-by: Matthias Kaehlcke <mka@chromium.org>
Tested-by: Matthias Kaehlcke <mka@chromium.org>

Reviewed-by: Stephen Boyd <sboyd@kernel.org>

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>

[ Viresh: Don't skip clk_set_rate() and massaged changelog ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

[ Viresh: Updated the patch to apply to v5.4 ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

---
 drivers/opp/core.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

-- 
2.25.0.rc1.19.g042ed3e048af

Comments

Viresh Kumar Aug. 25, 2020, 4:25 a.m. UTC | #1
On 24-08-20, 18:10, Greg KH wrote:
> On Mon, Aug 24, 2020 at 02:52:23PM +0530, Viresh Kumar wrote:

> > From: Rajendra Nayak <rnayak@codeaurora.org>

> > 

> > commit a4501bac0e553bed117b7e1b166d49731caf7260 upstream.

> > 

> > dev_pm_opp_set_rate() can now be called with freq = 0 in order

> > to either drop performance or bandwidth votes or to disable

> > regulators on platforms which support them.

> > 

> > In such cases, a subsequent call to dev_pm_opp_set_rate() with

> > the same frequency ends up returning early because 'old_freq == freq'

> > 

> > Instead make it fall through and put back the dropped performance

> > and bandwidth votes and/or enable back the regulators.

> > 

> > Cc: v5.3+ <stable@vger.kernel.org> # v5.3+

> > Fixes: cd7ea582866f ("opp: Make dev_pm_opp_set_rate() handle freq = 0 to drop performance votes")

> > Reported-by: Sajida Bhanu <sbhanu@codeaurora.org>

> > Reviewed-by: Sibi Sankar <sibis@codeaurora.org>

> > Reported-by: Matthias Kaehlcke <mka@chromium.org>

> > Tested-by: Matthias Kaehlcke <mka@chromium.org>

> > Reviewed-by: Stephen Boyd <sboyd@kernel.org>

> > Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>

> > [ Viresh: Don't skip clk_set_rate() and massaged changelog ]

> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> > [ Viresh: Updated the patch to apply to v5.4 ]

> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> > ---

> >  drivers/opp/core.c | 10 ++++++----

> >  1 file changed, 6 insertions(+), 4 deletions(-)

> 

> This too is already in the 5.7 and 5.4 queues, why add it again?


Same here, your bot reported that patch failed to apply for 5.4 and 5.7, again
rightly so as I was required to modify the patch a little bit and so I have
added another signed-off and details.

-- 
viresh
diff mbox series

Patch

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index 9ff0538ee83a..518442be638d 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -843,10 +843,12 @@  int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
 
 	/* Return early if nothing to do */
 	if (old_freq == freq) {
-		dev_dbg(dev, "%s: old/new frequencies (%lu Hz) are same, nothing to do\n",
-			__func__, freq);
-		ret = 0;
-		goto put_opp_table;
+		if (!opp_table->required_opp_tables) {
+			dev_dbg(dev, "%s: old/new frequencies (%lu Hz) are same, nothing to do\n",
+				__func__, freq);
+			ret = 0;
+			goto put_opp_table;
+		}
 	}
 
 	temp_freq = old_freq;