linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: viresh kumar <viresh.kumar@linaro.org>
To: nm@ti.com
Cc: rjw@rjwysocki.net, linaro-kernel@lists.linaro.org,
	patches@linaro.org, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	shawn.guo@linaro.org, ceh@ti.com,
	Viresh Kumar <viresh.kumar@linaro.org>
Subject: Re: [PATCH] cpufreq: Make sure CPU is running on a freq from freq-table
Date: Fri, 22 Nov 2013 12:33:32 +0530	[thread overview]
Message-ID: <528F01C4.1050608@linaro.org> (raw)
In-Reply-To: <de5c3ff26e9d06a6e0b06f8ba3da6d8c3ff82304.1385017369.git.viresh.kumar@linaro.org>

On Thursday 21 November 2013 12:39 PM, Viresh Kumar wrote:
> Sometimes boot loaders set CPU frequency to a value outside of frequency table
> present with cpufreq core. In such cases CPU might be unstable if it has to run
> on that frequency for long duration of time and so its better to set it to a
> frequency which is specified in freq-table. This also makes cpufreq stats
> inconsistent as cpufreq-stats would fail to register because current frequency
> of CPU isn't found in freq-table.
> 
> Because we don't want this change to effect boot process badly, we go for the
> next freq which is >= policy->cur ('cur' must be set by now, otherwise we will
> end up setting freq to lowest of the table as 'cur' is initialized to zero).
> 
> In case where CPU is already running on one of the frequencies present in
> freq-table, this would turn into a dummy call as __cpufreq_driver_target() would
> return early.
> 
> Reported-by: Carlos Hernandez <ceh@ti.com>
> Reported-by: Nishanth Menon <nm@ti.com>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Copying another mail from Nishant here to get my cc'list back..

On Friday 22 November 2013 05:12 AM, Nishanth Menon wrote:
> I gave this a quick run on my 3.12 kernel:
> http://pastebin.mozilla.org/3649730 is what I applied and output
> http://pastebin.mozilla.org/3649729
>
> I need to see what I might have mucked up.. or see if I can test this
> on 3.13 master on a different board (since OMAP5 wont boot in master
> without clock dts nodes :()..

This happened because of common sense, which was missing in my patch :)

Try this over existing patch:

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 6e8b226..e403388 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1126,13 +1126,19 @@ static int __cpufreq_add_dev(struct device *dev, struct
subsys_interface *sif,
         * In case where CPU is already running on one of the frequencies
         * present in freq-table, this would turn into a dummy call as
         * __cpufreq_driver_target() would return early.
+        *
+        * We are passing target-freq as "policy->cur - 1" otherwise
+        * __cpufreq_driver_target() would simply fail, as policy->cur will be
+        * equal to target-freq.
         */
        if (has_target()) {
-               ret = __cpufreq_driver_target(policy, policy->cur,
+               ret = __cpufreq_driver_target(policy, policy->cur - 1,
                                CPUFREQ_RELATION_L);
-               if (ret)
+               if (ret) {
                        pr_err("%s: Unable to set frequency from table: %d\n",
                                        __func__, ret);
+                       goto err_out_unregister;
+               }
        }

        /* related cpus should atleast have policy->cpus */


  parent reply	other threads:[~2013-11-22  7:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-21  7:09 [PATCH] cpufreq: Make sure CPU is running on a freq from freq-table Viresh Kumar
2013-11-21 13:11 ` Rafael J. Wysocki
2013-11-21 15:57   ` Viresh Kumar
2013-11-21 17:56     ` Dirk Brandewie
2013-11-21 21:43       ` Rafael J. Wysocki
2013-11-22  7:06         ` viresh kumar
2013-11-22  7:03 ` viresh kumar [this message]
2013-11-22 21:43   ` Nishanth Menon

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=528F01C4.1050608@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=ceh@ti.com \
    --cc=cpufreq@vger.kernel.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=patches@linaro.org \
    --cc=rjw@rjwysocki.net \
    --cc=shawn.guo@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).