Linux clock framework development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Abel Vesa" <abel.vesa@oss.qualcomm.com>
Cc: devicetree@vger.kernel.org, conor+dt@kernel.org, robh@kernel.org,
	linux-clk@vger.kernel.org
Subject: Re: [PATCH v4 17/52] clk: qcom: gcc-qcs615: Tie the CX power domain to controller
Date: Mon, 14 Sep 2026 13:58:28 +0000	[thread overview]
Message-ID: <20260914135829.427591F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914-qcom-tie-cx-to-gcc-v4-17-9d5a606ada33@oss.qualcomm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Enabling runtime PM (`use_rpm = true`) on a clock controller with `CLK_IS_CRITICAL` clocks causes a permanent PM runtime usage count leak, preventing the controller (and its attached CX power domain) from ever suspending.
--

commit 660d870b134f3691d16847f677af3d1122921193
Author: Abel Vesa <abel.vesa@oss.qualcomm.com>

clk: qcom: gcc-qcs615: Tie the CX power domain to controller

This commit enables runtime PM for the QCS615 GCC controller. It aims to allow
the CX power domain to power down once all GCC consumers release their clocks
and GDSCs.

> diff --git a/drivers/clk/qcom/gcc-qcs615.c b/drivers/clk/qcom/gcc-qcs615.c
> index 57f8c80c6f324..914a49573811f 100644
> --- a/drivers/clk/qcom/gcc-qcs615.c
> +++ b/drivers/clk/qcom/gcc-qcs615.c
> @@ -2968,6 +2968,7 @@ static const struct qcom_cc_desc gcc_qcs615_desc = {
>  	.num_resets = ARRAY_SIZE(gcc_qcs615_resets),
>  	.gdscs = gcc_qcs615_gdscs,
>  	.num_gdscs = ARRAY_SIZE(gcc_qcs615_gdscs),
> +	.use_rpm = true,

[Severity: High]
Will this actually allow the CX domain to power down, given the presence of
critical clocks in this controller?

Enabling runtime PM here instructs the clock framework to take PM runtime
references on the GCC device. However, this controller defines several clocks
with the CLK_IS_CRITICAL flag, such as gcc_cpuss_ahb_clk and
gcc_sys_noc_cpuss_ahb_clk:

static struct clk_branch gcc_cpuss_ahb_clk = {
        ...
        .clkr.hw.init = &(const struct clk_init_data) {
                ...
                .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
        },
};

When qcom_cc_really_probe() registers these clocks, the clock core sees
CLK_IS_CRITICAL and automatically prepares them via clk_core_prepare(). This
internally calls clk_pm_runtime_get(), which increments the GCC device's PM
runtime usage counter via pm_runtime_resume_and_get().

Because critical clocks are never unprepared, won't this result in a permanent
PM runtime usage count leak that prevents the controller and its attached CX
power domain from ever suspending?

>  };
>  
>  static const struct of_device_id gcc_qcs615_match_table[] = {

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914-qcom-tie-cx-to-gcc-v4-0-9d5a606ada33@oss.qualcomm.com?part=17

  reply	other threads:[~2026-09-14 13:58 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14 12:46 [PATCH v4 00/52] clk: qcom: Tie CX power domains to GCCs Abel Vesa
2026-09-14 12:47 ` [PATCH v4 01/52] dt-bindings: clock: qcom: gcc-sdm845: Add CX power domain Abel Vesa
2026-09-17  8:23   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 02/52] dt-bindings: clock: qcom: gcc-sm8150: " Abel Vesa
2026-09-17  8:25   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 03/52] dt-bindings: clock: qcom: gcc-sm8250: " Abel Vesa
2026-09-17  8:26   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 04/52] dt-bindings: clock: qcom: gcc-sm8350: " Abel Vesa
2026-09-17  8:29   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 05/52] dt-bindings: clock: qcom: gcc-sm8450: " Abel Vesa
2026-09-17  8:30   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 06/52] dt-bindings: clock: qcom: qcs615-gcc: " Abel Vesa
2026-09-17  8:30   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 07/52] dt-bindings: clock: qcom: sm8550-gcc: " Abel Vesa
2026-09-17  8:30   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 08/52] dt-bindings: clock: qcom: sm8650-gcc: " Abel Vesa
2026-09-17  8:31   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 09/52] dt-bindings: clock: qcom: sm8750-gcc: " Abel Vesa
2026-09-17  8:31   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 10/52] dt-bindings: clock: qcom: sm4450-gcc: " Abel Vesa
2026-09-17  8:31   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 11/52] dt-bindings: clock: qcom: gcc-sm6350: " Abel Vesa
2026-09-17  8:32   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 12/52] dt-bindings: clock: qcom: qcs8300-gcc: " Abel Vesa
2026-09-17  8:32   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 13/52] dt-bindings: clock: qcom: qdu1000-gcc: " Abel Vesa
2026-09-15  9:15   ` Taniya Das
2026-09-14 12:47 ` [PATCH v4 14/52] dt-bindings: clock: qcom: sdx75-gcc: " Abel Vesa
2026-09-17  8:32   ` Krzysztof Kozlowski
2026-09-14 12:47 ` [PATCH v4 15/52] clk: qcom: gcc-eliza: Tie the CX power domain to controller Abel Vesa
2026-09-14 13:44   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 16/52] clk: qcom: gcc-kaanapali: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 17/52] clk: qcom: gcc-qcs615: " Abel Vesa
2026-09-14 13:58   ` sashiko-bot [this message]
2026-09-14 12:47 ` [PATCH v4 18/52] clk: qcom: gcc-qcs8300: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 19/52] clk: qcom: gcc-qdu1000: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 20/52] clk: qcom: gcc-sa8775p: " Abel Vesa
2026-09-14 14:31   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 21/52] clk: qcom: gcc-sar2130p: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 22/52] clk: qcom: gcc-sc7180: " Abel Vesa
2026-09-14 14:52   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 23/52] clk: qcom: gcc-sc7280: " Abel Vesa
2026-09-14 15:21   ` sashiko-bot
2026-09-15  8:06   ` Taniya Das
2026-09-14 12:47 ` [PATCH v4 24/52] clk: qcom: gcc-sdm670: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 25/52] clk: qcom: gcc-sdm845: " Abel Vesa
2026-09-14 15:35   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 26/52] clk: qcom: gcc-sdx75: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 27/52] clk: qcom: gcc-sm4450: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 28/52] clk: qcom: gcc-sm6350: " Abel Vesa
2026-09-14 15:56   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 29/52] clk: qcom: gcc-sm8150: " Abel Vesa
2026-09-14 16:17   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 30/52] clk: qcom: gcc-sm8250: " Abel Vesa
2026-09-14 16:23   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 31/52] clk: qcom: gcc-sm8350: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 32/52] clk: qcom: gcc-sm8450: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 33/52] clk: qcom: gcc-sm8550: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 34/52] clk: qcom: gcc-sm8650: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 35/52] clk: qcom: gcc-sm8750: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 36/52] clk: qcom: gcc-x1e80100: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 37/52] arm64: dts: qcom: kaanapali: Add GCC CX power domain Abel Vesa
2026-09-14 12:47 ` [PATCH v4 38/52] arm64: dts: qcom: monaco: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 39/52] arm64: dts: qcom: qdu1000: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 40/52] arm64: dts: qcom: sar2130p: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 41/52] arm64: dts: qcom: sdm670: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 42/52] arm64: dts: qcom: sdx75: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 43/52] arm64: dts: qcom: sm4450: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 44/52] arm64: dts: qcom: sm6350: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 45/52] arm64: dts: qcom: sm8150: " Abel Vesa
2026-09-14 17:39   ` sashiko-bot
2026-09-14 12:47 ` [PATCH v4 46/52] arm64: dts: qcom: sm8250: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 47/52] arm64: dts: qcom: sm8350: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 48/52] arm64: dts: qcom: sm8450: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 49/52] arm64: dts: qcom: sm8550: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 50/52] arm64: dts: qcom: sm8650: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 51/52] arm64: dts: qcom: sm8750: " Abel Vesa
2026-09-14 12:47 ` [PATCH v4 52/52] arm64: dts: qcom: talos: " Abel Vesa

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=20260914135829.427591F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=abel.vesa@oss.qualcomm.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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