Linux Power Management development
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Subject: Re: [PATCH] cpufreq: Skip all governor-related actions for cpufreq_suspended set
Date: Thu, 7 Apr 2016 17:35:03 +0530	[thread overview]
Message-ID: <20160407120503.GG3201@vireshk-i7> (raw)
In-Reply-To: <CAJZ5v0g6zHT8yq-s+FkSb+ZE9K5vw_y0GX1nHaSLjOQXfsUquw@mail.gmail.com>

On 07-04-16, 13:44, Rafael J. Wysocki wrote:
> I'm not sure I'm following.
> 
> Without this patch fast switch is disabled when we offline the nonboot
> CPUs during suspend, because cpufreq_exit_governor() runs then, but
> the cpufreq_governor() called by it does nothing.  Also
> cpufreq_governor() during nonboot CPUs online does nothing.
> 
> That has to be made consistent somehow.  This patch is one way.
> Another way would be to disable fast switch from the governor ->exit
> callback, but the net result would be the same.

Actually things are working fine today by chance IMO, because we don't
free the policy structures anymore while we offline CPUs.

Otherwise, policy->governor_data would have been lost together with
the policy, and governor wouldn't have worked properly after resume.

What we are doing today is something like this:

Suspend
-------

-> cpufreq_suspend()
 -> STOP governor
 -> cpufreq_suspended = true

-> Offline non-boot CPUs
  -> cpufreq_offline()
    -> SKIP calling EXIT governor (governor had allocated few
    resources earlier)

Resume
------

-> Bring back non-boot CPUs
  -> cpufreq_online()
    -> SKIP calling INIT governor (policy->governor_data doesn't get
    reset, luckily)

-> cpufreq_resume()
 -> cpufreq_suspended = false
 -> START governor


That's *ugly* and it works by chance, unless I am misreading it
completely.

One of the solutions to get this cleaned is to stop checking for
cpufreq_suspended flag in cpufreq_governor() and put that *only* in
places where we are trying to interact with the hardware. And that
essentially is the callbacks provided by the cpufreq drivers. So,
ignore calling cpufreq-driver callbacks if cpufreq_suspended is true.

-- 
viresh

  reply	other threads:[~2016-04-07 12:05 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-07  1:29 [PATCH] cpufreq: Skip all governor-related actions for cpufreq_suspended set Rafael J. Wysocki
2016-04-07  4:28 ` Viresh Kumar
2016-04-07 11:22   ` Rafael J. Wysocki
2016-04-07 11:32     ` Viresh Kumar
2016-04-07 11:44       ` Rafael J. Wysocki
2016-04-07 12:05         ` Viresh Kumar [this message]
2016-04-07 22:05           ` Rafael J. Wysocki
2016-04-08  5:44             ` Viresh Kumar
2016-04-08 21:56               ` Rafael J. Wysocki
2016-04-08  5:45 ` Viresh Kumar
2016-04-08 21:54   ` Rafael J. Wysocki
2016-04-10  3:16     ` Viresh Kumar
2016-04-10  3:46       ` Rafael J. Wysocki
2016-04-10  4:08         ` [PATCH] cpufreq: Abort cpufreq_update_current_freq() " Rafael J. Wysocki
2016-04-10  4:10           ` Viresh Kumar

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=20160407120503.GG3201@vireshk-i7 \
    --to=viresh.kumar@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=srinivas.pandruvada@linux.intel.com \
    /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