From: Abel Vesa <abel.vesa@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
Kevin Hilman <khilman@kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>, Pavel Machek <pavel@ucw.cz>,
Len Brown <len.brown@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Bjorn Andersson <andersson@kernel.org>,
Andy Gross <agross@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Mike Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Saravana Kannan <saravanak@google.com>
Cc: linux-pm@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
Doug Anderson <dianders@chromium.org>,
Matthias Kaehlcke <mka@chromium.org>
Subject: [PATCH v3 0/4] Allow genpd providers to power off domains on sync state
Date: Mon, 27 Mar 2023 22:38:25 +0300 [thread overview]
Message-ID: <20230327193829.3756640-1-abel.vesa@linaro.org> (raw)
There have been already a couple of tries to make the genpd "disable
unused" late initcall skip the powering off of domains that might be
needed until later on (i.e. until some consumer probes). The conclusion
was that the provider could return -EBUSY from the power_off callback
until the provider's sync state has been reached. This patch series tries
to provide a proof-of-concept that is working on Qualcomm platforms.
I've been doing extensive testing on SM8450, but I've also spinned this
on my X13s (SC8280XP). Both patches that add the sync state callback to
the SC8280XP and SM8450 are here to provide context. Once we agree on
the form, I intend to add the sync state callback to all gdsc providers.
Currently, some of the gdsc providers might not reach sync state due to
list of consumers not probing yet (or at all). The sync state can be
enforced by writing 1 to the state_synced sysfs attribute of the
provider, thanks to Saravana's commit [1] which has been already merged.
[1] https://lore.kernel.org/r/20230304005355.746421-3-saravanak@google.com
V2 (RFC) of this patchset was here:
https://lore.kernel.org/all/20230320134217.1685781-1-abel.vesa@linaro.org/
Changes since v2:
* renamed genpd_queue_power_off_work to pm_genpd_queue_power_off and added
comment about its purpose w.r.t. it being exported.
* added the qcom_cc generic sync state callback to all providers that
register GDSCs, instead of SM8450 and SC8280XP
Changes since v1:
* Added the qcom_cc sync state callback which calls in turn the gdsc one
* dropped extra semicolon from pm_domain.h
Abel Vesa (4):
PM: domains: Allow power off queuing from providers
soc: qcom: rpmhpd: Do proper power off when state synced
clk: qcom: gdsc: Avoid actual power off until sync state
clk: qcom: Add sync state callback to all providers
drivers/base/power/domain.c | 18 ++++++++++--------
drivers/clk/qcom/apss-ipq6018.c | 1 +
drivers/clk/qcom/camcc-sc7180.c | 1 +
drivers/clk/qcom/camcc-sc7280.c | 1 +
drivers/clk/qcom/camcc-sdm845.c | 1 +
drivers/clk/qcom/camcc-sm6350.c | 1 +
drivers/clk/qcom/camcc-sm8250.c | 1 +
drivers/clk/qcom/camcc-sm8450.c | 1 +
drivers/clk/qcom/common.c | 19 +++++++++++++++++++
drivers/clk/qcom/common.h | 2 ++
drivers/clk/qcom/dispcc-qcm2290.c | 1 +
drivers/clk/qcom/dispcc-sc7180.c | 1 +
drivers/clk/qcom/dispcc-sc7280.c | 1 +
drivers/clk/qcom/dispcc-sc8280xp.c | 1 +
drivers/clk/qcom/dispcc-sdm845.c | 1 +
drivers/clk/qcom/dispcc-sm6115.c | 1 +
drivers/clk/qcom/dispcc-sm6125.c | 1 +
drivers/clk/qcom/dispcc-sm6350.c | 1 +
drivers/clk/qcom/dispcc-sm6375.c | 1 +
drivers/clk/qcom/dispcc-sm8250.c | 1 +
drivers/clk/qcom/dispcc-sm8450.c | 1 +
drivers/clk/qcom/dispcc-sm8550.c | 1 +
drivers/clk/qcom/gcc-apq8084.c | 1 +
drivers/clk/qcom/gcc-ipq806x.c | 1 +
drivers/clk/qcom/gcc-ipq8074.c | 1 +
drivers/clk/qcom/gcc-mdm9615.c | 1 +
drivers/clk/qcom/gcc-msm8660.c | 1 +
drivers/clk/qcom/gcc-msm8909.c | 1 +
drivers/clk/qcom/gcc-msm8916.c | 1 +
drivers/clk/qcom/gcc-msm8939.c | 1 +
drivers/clk/qcom/gcc-msm8953.c | 1 +
drivers/clk/qcom/gcc-msm8960.c | 1 +
drivers/clk/qcom/gcc-msm8974.c | 1 +
drivers/clk/qcom/gcc-msm8976.c | 1 +
drivers/clk/qcom/gcc-msm8994.c | 1 +
drivers/clk/qcom/gcc-msm8996.c | 1 +
drivers/clk/qcom/gcc-msm8998.c | 1 +
drivers/clk/qcom/gcc-qcm2290.c | 1 +
drivers/clk/qcom/gcc-qcs404.c | 1 +
drivers/clk/qcom/gcc-qdu1000.c | 1 +
drivers/clk/qcom/gcc-sa8775p.c | 1 +
drivers/clk/qcom/gcc-sc7180.c | 1 +
drivers/clk/qcom/gcc-sc7280.c | 1 +
drivers/clk/qcom/gcc-sc8180x.c | 1 +
drivers/clk/qcom/gcc-sc8280xp.c | 1 +
drivers/clk/qcom/gcc-sdm660.c | 1 +
drivers/clk/qcom/gcc-sdm845.c | 1 +
drivers/clk/qcom/gcc-sdx55.c | 1 +
drivers/clk/qcom/gcc-sdx65.c | 1 +
drivers/clk/qcom/gcc-sm6115.c | 1 +
drivers/clk/qcom/gcc-sm6125.c | 1 +
drivers/clk/qcom/gcc-sm6350.c | 1 +
drivers/clk/qcom/gcc-sm6375.c | 1 +
drivers/clk/qcom/gcc-sm7150.c | 1 +
drivers/clk/qcom/gcc-sm8150.c | 1 +
drivers/clk/qcom/gcc-sm8250.c | 1 +
drivers/clk/qcom/gcc-sm8350.c | 1 +
drivers/clk/qcom/gcc-sm8450.c | 1 +
drivers/clk/qcom/gcc-sm8550.c | 1 +
drivers/clk/qcom/gdsc.c | 26 ++++++++++++++++++++++++++
drivers/clk/qcom/gdsc.h | 6 ++++++
drivers/clk/qcom/gpucc-msm8998.c | 1 +
drivers/clk/qcom/gpucc-sc7180.c | 1 +
drivers/clk/qcom/gpucc-sc7280.c | 1 +
drivers/clk/qcom/gpucc-sc8280xp.c | 1 +
drivers/clk/qcom/gpucc-sdm660.c | 1 +
drivers/clk/qcom/gpucc-sdm845.c | 1 +
drivers/clk/qcom/gpucc-sm6115.c | 1 +
drivers/clk/qcom/gpucc-sm6125.c | 1 +
drivers/clk/qcom/gpucc-sm6350.c | 1 +
drivers/clk/qcom/gpucc-sm6375.c | 1 +
drivers/clk/qcom/gpucc-sm8150.c | 1 +
drivers/clk/qcom/gpucc-sm8250.c | 1 +
drivers/clk/qcom/gpucc-sm8350.c | 1 +
drivers/clk/qcom/lcc-ipq806x.c | 1 +
drivers/clk/qcom/lpassaudiocc-sc7280.c | 1 +
drivers/clk/qcom/lpasscc-sc7280.c | 1 +
drivers/clk/qcom/lpasscorecc-sc7180.c | 2 ++
drivers/clk/qcom/lpasscorecc-sc7280.c | 2 ++
drivers/clk/qcom/mmcc-apq8084.c | 1 +
drivers/clk/qcom/mmcc-msm8974.c | 1 +
drivers/clk/qcom/mmcc-msm8994.c | 1 +
drivers/clk/qcom/mmcc-msm8996.c | 1 +
drivers/clk/qcom/mmcc-msm8998.c | 1 +
drivers/clk/qcom/mmcc-sdm660.c | 1 +
drivers/clk/qcom/videocc-sc7180.c | 1 +
drivers/clk/qcom/videocc-sc7280.c | 1 +
drivers/clk/qcom/videocc-sdm845.c | 1 +
drivers/clk/qcom/videocc-sm8150.c | 1 +
drivers/clk/qcom/videocc-sm8250.c | 1 +
drivers/soc/qcom/rpmhpd.c | 19 +++++++------------
include/linux/pm_domain.h | 4 ++++
92 files changed, 161 insertions(+), 20 deletions(-)
--
2.34.1
next reply other threads:[~2023-03-27 19:38 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-27 19:38 Abel Vesa [this message]
2023-03-27 19:38 ` [PATCH v3 1/4] PM: domains: Allow power off queuing from providers Abel Vesa
2023-03-27 19:38 ` [PATCH v3 2/4] soc: qcom: rpmhpd: Do proper power off when state synced Abel Vesa
2023-04-11 3:06 ` Bjorn Andersson
2023-03-27 19:38 ` [PATCH v3 3/4] clk: qcom: gdsc: Avoid actual power off until sync state Abel Vesa
2023-03-27 19:38 ` [PATCH v3 4/4] clk: qcom: Add sync state callback to all providers Abel Vesa
2023-03-28 0:17 ` [PATCH v3 0/4] Allow genpd providers to power off domains on sync state Saravana Kannan
2023-03-30 11:27 ` Abel Vesa
2023-03-30 19:50 ` Saravana Kannan
2023-03-31 4:59 ` Abel Vesa
2023-04-05 14:11 ` Ulf Hansson
2023-04-06 9:26 ` Abel Vesa
2023-04-06 10:59 ` Ulf Hansson
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=20230327193829.3756640-1-abel.vesa@linaro.org \
--to=abel.vesa@linaro.org \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=khilman@kernel.org \
--cc=konrad.dybcio@linaro.org \
--cc=len.brown@intel.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mka@chromium.org \
--cc=mturquette@baylibre.com \
--cc=pavel@ucw.cz \
--cc=rafael@kernel.org \
--cc=saravanak@google.com \
--cc=sboyd@kernel.org \
--cc=ulf.hansson@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