From: Dmitry Osipenko <digetx@gmail.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Thierry Reding" <thierry.reding@gmail.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Viresh Kumar" <vireshk@kernel.org>,
"Stephen Boyd" <sboyd@kernel.org>,
"Peter De Schrijver" <pdeschrijver@nvidia.com>,
"Mikko Perttunen" <mperttunen@nvidia.com>,
"Lee Jones" <lee.jones@linaro.org>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Nishanth Menon" <nm@ti.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Michael Turquette" <mturquette@baylibre.com>,
linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-pm@vger.kernel.org, linux-pwm@vger.kernel.org,
linux-mmc@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-clk@vger.kernel.org, "David Heidelberg" <david@ixit.cz>
Subject: Re: [PATCH v14 01/39] soc/tegra: Enable runtime PM during OPP state-syncing
Date: Wed, 27 Oct 2021 22:32:34 +0300 [thread overview]
Message-ID: <8076eee8-ac8b-90a7-b87a-35e40d7300fb@gmail.com> (raw)
In-Reply-To: <CAPDyKFr7VY73cQugSA5n-p_oXf43o1M-7s3-M+fnk0656h25UA@mail.gmail.com>
27.10.2021 18:06, Ulf Hansson пишет:
> On Tue, 26 Oct 2021 at 00:45, Dmitry Osipenko <digetx@gmail.com> wrote:
>>
>> GENPD core now can set up domain's performance state properly while device
>> is RPM-suspended. Runtime PM of a device must be enabled during setup
>> because GENPD checks whether device is suspended and check doesn't work
>> while RPM is disabled. Instead of replicating the boilerplate RPM-enable
>> code around OPP helper for each driver, let's make OPP helper to take care
>> of enabling it.
>>
>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>
> Just a minor nitpick, see below. Nevertheless feel free to add:
>
> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
>
> Kind regards
> Uffe
>
>> ---
>> drivers/soc/tegra/common.c | 16 ++++++++++++++++
>> 1 file changed, 16 insertions(+)
>>
>> diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c
>> index cd33e99249c3..d930a2b4facc 100644
>> --- a/drivers/soc/tegra/common.c
>> +++ b/drivers/soc/tegra/common.c
>> @@ -10,6 +10,7 @@
>> #include <linux/export.h>
>> #include <linux/of.h>
>> #include <linux/pm_opp.h>
>> +#include <linux/pm_runtime.h>
>>
>> #include <soc/tegra/common.h>
>> #include <soc/tegra/fuse.h>
>> @@ -43,6 +44,7 @@ static int tegra_core_dev_init_opp_state(struct device *dev)
>> {
>> unsigned long rate;
>> struct clk *clk;
>> + bool rpm_enabled;
>> int err;
>>
>> clk = devm_clk_get(dev, NULL);
>> @@ -57,8 +59,22 @@ static int tegra_core_dev_init_opp_state(struct device *dev)
>> return -EINVAL;
>> }
>>
>> + /*
>> + * Runtime PM of the device must be enabled in order to set up
>> + * GENPD's performance properly because GENPD core checks whether
>> + * device is suspended and this check doesn't work while RPM is
>> + * disabled.
>> + */
>> + rpm_enabled = pm_runtime_enabled(dev);
>> + if (!rpm_enabled)
>> + pm_runtime_enable(dev);
>
> This makes sure the OPP vote below gets cached in genpd for the
> device. Instead, the vote is done the next time the device gets
> runtime resumed.
Thanks, I'll extend the code's comment with this text in v15.
I also noticed that won't hurt to add extra sanity check of whether RPM
indeed got enabled since it could be disabled multiple times in a
nesting fashion.
> I don't have an issue doing it like this, but at the same time it does
> remove some flexibility for the drivers/subsystem that calls
> tegra_core_dev_init_opp_state().
>
> Isn't it better to leave this to be flexible - or you prefer to have
> it done like this for everybody?
All the current users of the helper function want this behaviour by
default. It's unlikely that we will ever have a user that will want
different bahaviour, but even then it won't be a problem to add extra
flag to struct tegra_core_opp_params to specify that special case.
next prev parent reply other threads:[~2021-10-27 19:32 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-25 22:39 [PATCH v14 00/39] NVIDIA Tegra power management patches for 5.17 Dmitry Osipenko
2021-10-25 22:39 ` [PATCH v14 01/39] soc/tegra: Enable runtime PM during OPP state-syncing Dmitry Osipenko
2021-10-27 15:06 ` Ulf Hansson
2021-10-27 19:32 ` Dmitry Osipenko [this message]
2021-10-25 22:39 ` [PATCH v14 02/39] soc/tegra: Add devm_tegra_core_dev_init_opp_table_common() Dmitry Osipenko
2021-10-25 22:39 ` [PATCH v14 03/39] soc/tegra: Don't print error message when OPPs not available Dmitry Osipenko
2021-10-25 22:39 ` [PATCH v14 04/39] dt-bindings: clock: tegra-car: Document new clock sub-nodes Dmitry Osipenko
2021-10-25 22:39 ` [PATCH v14 05/39] clk: tegra: Support runtime PM and power domain Dmitry Osipenko
2021-10-25 22:39 ` [PATCH v14 06/39] dt-bindings: host1x: Document OPP and power domain properties Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 07/39] dt-bindings: host1x: Document Memory Client resets of Host1x, GR2D and GR3D Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 08/39] gpu: host1x: Add initial runtime PM and OPP support Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 09/39] gpu: host1x: Add host1x_channel_stop() Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 10/39] drm/tegra: dc: Support OPP and SoC core voltage scaling Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 11/39] drm/tegra: hdmi: Add OPP support Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 12/39] drm/tegra: gr2d: Support generic power domain and runtime PM Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 13/39] drm/tegra: gr3d: " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 14/39] drm/tegra: vic: Stop channel on suspend Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 15/39] drm/tegra: nvdec: " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 16/39] drm/tegra: submit: Remove pm_runtime_enabled() checks Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 17/39] drm/tegra: submit: Add missing pm_runtime_mark_last_busy() Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 18/39] usb: chipidea: tegra: Add runtime PM and OPP support Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 19/39] bus: tegra-gmi: " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 20/39] pwm: tegra: " Dmitry Osipenko
2021-10-29 15:20 ` Dmitry Osipenko
2021-10-29 15:28 ` Ulf Hansson
2021-10-29 16:28 ` Dmitry Osipenko
2021-10-29 15:56 ` Rafael J. Wysocki
2021-10-29 16:29 ` Dmitry Osipenko
2021-10-29 18:06 ` Rafael J. Wysocki
2021-10-30 0:47 ` Dmitry Osipenko
2021-10-30 1:04 ` Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 21/39] mmc: sdhci-tegra: " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 22/39] mtd: rawnand: tegra: " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 23/39] spi: tegra20-slink: Add " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 24/39] media: dt: bindings: tegra-vde: Convert to schema Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 25/39] media: dt: bindings: tegra-vde: Document OPP and power domain Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 26/39] media: staging: tegra-vde: Support generic " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 27/39] soc/tegra: fuse: Reset hardware Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 28/39] soc/tegra: fuse: Use resource-managed helpers Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 29/39] soc/tegra: regulators: Prepare for suspend Dmitry Osipenko
2021-10-27 15:47 ` Ulf Hansson
2021-10-27 19:39 ` Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 30/39] soc/tegra: pmc: Rename 3d power domains Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 31/39] soc/tegra: pmc: Rename core power domain Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 32/39] soc/tegra: pmc: Enable core domain support for Tegra20 and Tegra30 Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 33/39] ARM: tegra: Rename CPU and EMC OPP table device-tree nodes Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 34/39] ARM: tegra: Add 500MHz entry to Tegra30 memory OPP table Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 35/39] ARM: tegra: Add OPP tables and power domains to Tegra20 device-trees Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 36/39] ARM: tegra: Add OPP tables and power domains to Tegra30 device-trees Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 37/39] ARM: tegra: Add Memory Client resets to Tegra20 GR2D, GR3D and Host1x Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 38/39] ARM: tegra: Add Memory Client resets to Tegra30 " Dmitry Osipenko
2021-10-25 22:40 ` [PATCH v14 39/39] ARM: tegra20/30: Disable unused host1x hardware Dmitry Osipenko
2021-10-27 16:01 ` [PATCH v14 00/39] NVIDIA Tegra power management patches for 5.17 Ulf Hansson
2021-10-27 19:42 ` Dmitry Osipenko
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=8076eee8-ac8b-90a7-b87a-35e40d7300fb@gmail.com \
--to=digetx@gmail.com \
--cc=adrian.hunter@intel.com \
--cc=david@ixit.cz \
--cc=dri-devel@lists.freedesktop.org \
--cc=jonathanh@nvidia.com \
--cc=lee.jones@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mperttunen@nvidia.com \
--cc=mturquette@baylibre.com \
--cc=nm@ti.com \
--cc=pdeschrijver@nvidia.com \
--cc=sboyd@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
--cc=ulf.hansson@linaro.org \
--cc=vireshk@kernel.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