From: Stephen Boyd <sboyd@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
patches@lists.linux.dev, linux-arm-msm@vger.kernel.org,
Taniya Das <quic_tdas@quicinc.com>,
Douglas Anderson <dianders@chromium.org>
Subject: [PATCH 5/5] clk: Get runtime PM before walking tree for clk_summary
Date: Sun, 24 Mar 2024 22:44:02 -0700 [thread overview]
Message-ID: <20240325054403.592298-6-sboyd@kernel.org> (raw)
In-Reply-To: <20240325054403.592298-1-sboyd@kernel.org>
Similar to the previous commit, we should make sure that all devices are
runtime resumed before printing the clk_summary through debugfs. Failure
to do so would result in a deadlock if the thread is resuming a device
to print clk state and that device is also runtime resuming in another
thread, e.g the screen is turning on and the display driver is starting
up.
Fixes: 1bb294a7981c ("clk: Enable/Disable runtime PM for clk_summary")
Cc: Taniya Das <quic_tdas@quicinc.com>
Cc: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
---
drivers/clk/clk.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 31998ca67b1e..10792599bec1 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -3332,7 +3332,7 @@ static int clk_summary_show(struct seq_file *s, void *data)
seq_puts(s, " clock count count count rate accuracy phase cycle enable consumer id\n");
seq_puts(s, "---------------------------------------------------------------------------------------------------------------------------------------------\n");
-
+ clk_pm_runtime_get_all();
clk_prepare_lock();
for (; *lists; lists++)
@@ -3340,6 +3340,7 @@ static int clk_summary_show(struct seq_file *s, void *data)
clk_summary_show_subtree(s, c, 0);
clk_prepare_unlock();
+ clk_pm_runtime_put_all();
return 0;
}
@@ -3389,6 +3390,8 @@ static int clk_dump_show(struct seq_file *s, void *data)
struct hlist_head **lists = s->private;
seq_putc(s, '{');
+
+ clk_pm_runtime_get_all();
clk_prepare_lock();
for (; *lists; lists++) {
@@ -3401,6 +3404,7 @@ static int clk_dump_show(struct seq_file *s, void *data)
}
clk_prepare_unlock();
+ clk_pm_runtime_put_all();
seq_puts(s, "}\n");
return 0;
--
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git
next prev parent reply other threads:[~2024-03-25 5:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-25 5:43 [PATCH 0/5] Fix a deadlock with clk_pm_runtime_get() Stephen Boyd
2024-03-25 5:43 ` [PATCH 1/5] clk: Remove prepare_lock hold assertion in __clk_release() Stephen Boyd
2024-03-25 16:18 ` Doug Anderson
2024-03-25 5:43 ` [PATCH 2/5] clk: Don't hold prepare_lock when calling kref_put() Stephen Boyd
2024-03-25 16:19 ` Doug Anderson
2024-03-25 5:44 ` [PATCH 3/5] clk: Initialize struct clk_core kref earlier Stephen Boyd
2024-03-25 16:19 ` Doug Anderson
2024-03-25 5:44 ` [PATCH 4/5] clk: Get runtime PM before walking tree during disable_unused Stephen Boyd
2024-03-25 16:19 ` Doug Anderson
2024-03-25 17:06 ` Stephen Boyd
2024-03-25 17:15 ` Doug Anderson
2024-03-25 5:44 ` Stephen Boyd [this message]
2024-03-25 16:19 ` [PATCH 5/5] clk: Get runtime PM before walking tree for clk_summary Doug Anderson
2024-03-25 17:09 ` Stephen Boyd
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=20240325054403.592298-6-sboyd@kernel.org \
--to=sboyd@kernel.org \
--cc=dianders@chromium.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=patches@lists.linux.dev \
--cc=quic_tdas@quicinc.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.