From: Gabor Juhos <j4g8y7@gmail.com>
To: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
Bjorn Andersson <andersson@kernel.org>,
Stephen Boyd <sboyd@kernel.org>,
Brian Masney <bmasney+clk@redhat.com>,
Jerome Brunet <jbrunet+clk@baylibre.com>,
Konrad Dybcio <konradybcio@kernel.org>,
Abel Vesa <abel.vesa@oss.qualcomm.com>,
Varadarajan Narayanan <varadarajan.narayanan@oss.qualcomm.com>,
Gokul Sriram Palanisamy <quic_gokulsri@quicinc.com>,
Sricharan Ramabadhran <quic_srichara@quicinc.com>
Cc: Stanislaw Pal <kuncy7@gmail.com>,
Mieczyslaw Nalewaj <namiltd@yahoo.com>,
Jie Luo <jie.luo@oss.qualcomm.com>,
Georg Seema <georgseema@gmail.com>,
linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] clk: qcom: gcc-ipq5018: mark 'gpll0_main' clock as critical
Date: Sat, 3 Oct 2026 21:50:57 +0200 [thread overview]
Message-ID: <4ae83db6-768d-447e-b177-3ef5206267f9@gmail.com> (raw)
In-Reply-To: <66d48e1f-7bab-42f3-84db-ce794f2a2a89@oss.qualcomm.com>
2026. 10. 01. 18:15 keltezéssel, Konrad Dybcio írta:
> On 9/24/26 1:33 PM, Gabor Juhos wrote:
>> Hi Konrad,
>>
>> 2026. 09. 23. 15:32 keltezéssel, Konrad Dybcio írta:
>>> On 9/18/26 11:27 AM, Gabor Juhos wrote:
>>>> On IPQ5018, the APCS core clock feeds the CPUs. It can use
>>>> different clocks as its parent, but during system boot it
>>>> utilizes GPLL0.
>
> [...]
>
>>> At a glance, we have the CPUs consuming
>>> &apcs_glb APCS_ALIAS0_CORE_CLK
>>>
>>> which takes XO/GPLL0/A53PLL as parents.
>>>
>>> GPLL0 is a child of GPLL0_MAIN, so this should never be gated in
>>> practice. devlink and probe deferrals should make sure you always
>>> get a valid clock handle for the cpufreq driver..
>>
>> Yes, the cpufreq driver gets a valid clock handle. However the hang happens
>> early, when the 'apcs_alias0_core' clock is not registered yet. So CCF does not
>> know that the clock (hence the CPU) is a consumer of GPLL0.
>
> So is that the late_initcall kicking in early, disabling unused
> clocks,
No, disabling unused clocks happens much later.
> or is there some other logic that ends up disabling the
> GPLL?
In the actual case, it is being disabled by runtime PM, which happens due to the
pm_runtime_put() call in the 'ipq_cmn_pll' driver's probe function.
Adding a WARN() into the clk_alpha_pll_disable() function results in this message:
WARNING: disabling 'gpll0_main', expect a system hang!!!
WARNING: at clk_alpha_pll_disable+0xd8/0x108, CPU#0: kworker/u8:0/11
Modules linked in:
CPU: 0 UID: 0 PID: 11 Comm: kworker/u8:0 Not tainted 7.3.0-rc1 #0 PREEMPT
Hardware name: TP-Link Archer AX55 v1 (DT)
Workqueue: pm pm_runtime_work
...
Call trace:
clk_alpha_pll_disable+0xd8/0x108 (P)
clk_core_disable+0xec/0x278 # gpll0_main
clk_core_disable+0x110/0x278 # gpll0
clk_core_disable+0x110/0x278 # pcnoc_bfdcd_clk_src
clk_core_disable+0x110/0x278 # pcnoc_clk_src
clk_core_disable+0x110/0x278 # gcc_cmn_blk_ahb_clk
clk_disable+0x38/0x60
pm_clk_suspend+0x120/0x170
pm_generic_runtime_suspend+0x34/0x58
__rpm_callback+0x50/0x200
rpm_callback+0x60/0x78
rpm_suspend+0xf4/0x5e8
pm_runtime_work+0xd4/0xe0
process_one_work+0x258/0x860
worker_thread+0x1c8/0x378
kthread+0x140/0x158
ret_from_fork+0x10/0x20
However the problem is not specific to the ipq_cmn_pll driver. It is a race
between probing different devices.
For example, consider a simplified probe function of a driver:
static int ipq5018_gpll0_consumer_probe(struct platform_device *pdev)
{
struct clk *clk;
clk = devm_clk_get_enabled(&pdev->dev, "foo");
if (IS_ERR(clk))
return PTR_ERR(clk);
return some_function();
}
Then assume the followings:
- "foo" is a descendant clock of GPLL0
- the probe function runs before probing other devices, so the probed device
will be the first consumer of GPLL0
- some_function() returns with an error code
The result will be the same hang. Due to the probe failure, devres disables the
clock, but since the the device is the only consumer of GPLL0, it is getting
disabled as well.
Here is the repective WARN result:
WARNING: disabling 'gpll0_main', expect a system hang!!!
WARNING: at clk_alpha_pll_disable+0xd8/0xf8, CPU#1: swapper/0/1
Modules linked in:
CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 7.3.0-rc1 #0 PREEMPT
Hardware name: TP-Link Archer AX55 v1 (DT)
..
Call trace:
clk_alpha_pll_disable+0xd8/0xf8 (P)
clk_core_disable+0xdc/0x268
clk_disable+0x38/0x60
clk_disable_unprepare+0x18/0x38
devm_clk_release+0x2c/0x50
dr_node_release+0x24/0x38
release_nodes+0x78/0x118
devres_release_all+0x84/0xf0
device_unbind_cleanup+0x34/0x98
really_probe+0x190/0x3f0
__driver_probe_device+0x174/0x1e0
driver_probe_device+0xc4/0x130
__driver_attach+0x108/0x258
bus_for_each_dev+0x6c/0xb8
driver_attach+0x2c/0x40
bus_add_driver+0x128/0x258
driver_register+0x68/0x138
__platform_driver_register+0x30/0x48
ipq5018_gpll0_consumer_driver_init+0x2c/0x40
do_one_initcall+0x6c/0x548
kernel_init_freeable+0x264/0x388
kernel_init+0x34/0x1f0
ret_from_fork+0x10/0x20
Maybe this helps to understand the problem.
Regards,
Gabor
next prev parent reply other threads:[~2026-10-03 19:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 9:27 Gabor Juhos
2026-09-18 12:05 ` Stanislaw Pal
2026-09-19 5:21 ` Mieczyslaw Nalewaj
2026-09-23 13:32 ` Konrad Dybcio
2026-09-24 11:33 ` Gabor Juhos
2026-10-01 16:15 ` Konrad Dybcio
2026-10-03 19:50 ` Gabor Juhos [this message]
2026-09-23 22:19 ` Bjorn Andersson
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=4ae83db6-768d-447e-b177-3ef5206267f9@gmail.com \
--to=j4g8y7@gmail.com \
--cc=abel.vesa@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=bmasney+clk@redhat.com \
--cc=georgseema@gmail.com \
--cc=jbrunet+clk@baylibre.com \
--cc=jie.luo@oss.qualcomm.com \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=kuncy7@gmail.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=namiltd@yahoo.com \
--cc=quic_gokulsri@quicinc.com \
--cc=quic_srichara@quicinc.com \
--cc=sboyd@kernel.org \
--cc=stable@vger.kernel.org \
--cc=varadarajan.narayanan@oss.qualcomm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®