From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Leonard Crestez <leonard.crestez@nxp.com>
Cc: "Chanwoo Choi" <cw00.choi@samsung.com>,
"Matthias Kaehlcke" <mka@chromium.org>,
"Kyungmin Park" <kyungmin.park@samsung.com>,
"MyungJoo Ham" <myungjoo.ham@samsung.com>,
"Artur Świgoń" <a.swigon@partner.samsung.com>,
"Saravana Kannan" <saravanak@google.com>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Alexandre Bailon" <abailon@baylibre.com>,
"Georgi Djakov" <georgi.djakov@linaro.org>,
"Jacky Bai" <ping.bai@nxp.com>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
"NXP Linux Team" <linux-imx@nxp.com>,
linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH RFC 0/2] PM / devfreq: Add dev_pm_qos support with minimal changes
Date: Wed, 04 Dec 2019 11:46:17 +0100 [thread overview]
Message-ID: <5794906.l6Fuony6qs@kreacher> (raw)
In-Reply-To: <cover.1574179738.git.leonard.crestez@nxp.com>
On Tuesday, November 19, 2019 5:12:12 PM CET Leonard Crestez wrote:
> Add dev_pm_qos notifiers to devfreq core in order to support frequency
> limits via dev_pm_qos_add_request.
>
> Unlike the rest of devfreq the dev_pm_qos frequency is measured in kHz,
> this is consistent with current dev_pm_qos usage for cpufreq and
> allows frequencies above 2Ghz (pm_qos expresses limits as s32).
>
> Like with cpufreq the handling of min_freq/max_freq is moved to the
> dev_pm_qos mechanism. Constraints from userspace are no longer clamped on
> store, instead all values can be written and we only check against OPPs in a
> new devfreq_get_freq_range function. This is consistent with the design of
> dev_pm_qos.
>
> Notifiers from pm_qos are executed under a single global dev_pm_qos_mtx and
> need to take devfreq->lock, this means that calls into dev_pm_qos while holding
> devfreq->lock are not allowed (lockdep warns about possible deadlocks).
>
> Fix this by only adding the qos request and notifiers after devfreq->lock is
> released inside devfreq_add_device. In theory this means sysfs writes
> are possible before the min/max requests are initialized so we guard
> against that explictly. The dev_pm_qos_update_request function would
> otherwise print a big WARN splat.
>
> Alternatively devfreq initialization could be refactored to avoid taking
> devfreq->lock but that requires several intricate changes:
>
> https://patchwork.kernel.org/cover/11242865/
>
> I considered making dev_pm_qos call notifiers outside the lock but
> that's another complex refactoring and it's difficult to ensure
> correctness. If two identical qos requests are made in parallel then the
> second shouldn't return until all notifiers are completely executed for
> the first and QOS is enforced; otherwise it mostly defeats the purpose
> of making proactive requests.
>
> This series implements the minimal changes in order to implement dev_pm_qos
> support for devfreq. It only costs a little defensive programming.
>
> This series is also marked as [RFC] because it depends on restoring
> DEV_PM_QOS_MIN/MAX_FREQUENCY inside the pm core:
>
> https://patchwork.kernel.org/cover/11250413/
>
> ---
> Changes since "big version" v10:
> * Drop accepted cleanups
> * Work with current locking approach (split cleanups into other series)
> * Drop acks and deliberately relabel as a new series. It still incorporates
> most previous discussion but takes a different approach to locking.
> * Don't print errors if devfreq_dev_release is called on error cleanup from
> devfreq_add_device, just accept that requests and notifiers might not be
> registered yet. I wish dev_pm_qos cleanups behaved like standard "kfree" and
> silently did nothing when there's nothing to be done.
> Link to v10: https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=196443
>
> Leonard Crestez (2):
> PM / devfreq: Add PM QoS support
> PM / devfreq: Use PM QoS for sysfs min/max_freq
>
> drivers/devfreq/devfreq.c | 151 ++++++++++++++++++++++++++++++++++----
> include/linux/devfreq.h | 14 +++-
> 2 files changed, 145 insertions(+), 20 deletions(-)
Please resend this series as non-RFC with the ACKs from Chanwoo included.
It may still be viable to push it for 5.5 during the -rc period.
Thanks!
next prev parent reply other threads:[~2019-12-04 10:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-19 16:12 [PATCH RFC 0/2] PM / devfreq: Add dev_pm_qos support with minimal changes Leonard Crestez
2019-11-19 16:12 ` [PATCH RFC 1/2] PM / devfreq: Add PM QoS support Leonard Crestez
2019-12-02 1:13 ` Chanwoo Choi
2019-11-19 16:12 ` [PATCH RFC 2/2] PM / devfreq: Use PM QoS for sysfs min/max_freq Leonard Crestez
2019-11-21 23:16 ` Matthias Kaehlcke
2019-11-25 16:46 ` Leonard Crestez
2019-12-02 1:18 ` Chanwoo Choi
2019-12-04 10:46 ` Rafael J. Wysocki [this message]
2019-12-05 0:52 ` [PATCH RFC 0/2] PM / devfreq: Add dev_pm_qos support with minimal changes Chanwoo Choi
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=5794906.l6Fuony6qs@kreacher \
--to=rjw@rjwysocki.net \
--cc=a.swigon@partner.samsung.com \
--cc=abailon@baylibre.com \
--cc=cw00.choi@samsung.com \
--cc=georgi.djakov@linaro.org \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=leonard.crestez@nxp.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-pm@vger.kernel.org \
--cc=mka@chromium.org \
--cc=myungjoo.ham@samsung.com \
--cc=ping.bai@nxp.com \
--cc=saravanak@google.com \
--cc=viresh.kumar@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).