[GIT PULL] clk fixes for v6.9-rc4

From: Stephen Boyd
Date: Fri Apr 19 2024 - 21:49:19 EST


The following changes since commit 4cece764965020c22cff7665b18a012006359095:

Linux 6.9-rc1 (2024-03-24 14:10:05 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git tags/clk-fixes-for-linus

for you to fetch changes up to d3e8a91a848a5941e3c31ecebd6b2612b37e01a6:

clk: mediatek: mt7988-infracfg: fix clocks for 2nd PCIe port (2024-04-10 20:50:26 -0700)

----------------------------------------------------------------
A couple clk driver fixes, a build fix, and a deadlock fix.

- Mediatek mt7988 has broken PCIe because the wrong parent is used

- Mediatek clk drivers may deadlock when registering their clks because
the clk provider device is repeatedly runtime PM resumed and
suspended during probe and clk registration. Resuming the clk
provider device deadlocks with an ABBA deadlock due to genpd_lock and
the clk prepare_lock. The fix is to keep the device runtime resumed
while registering clks.

- Another runtime PM related deadlock, this time with disabling unused
clks during late init. We get an ABBA deadlock where a device is
runtime PM resuming (or suspending) while the disabling of unused
clks is happening in parallel. That runtime PM action calls into the
clk framework and tries to grab the clk prepare_lock while the
disabling of unused clks holds the prepare_lock and is waiting for
that runtime PM action to complete. The fix is to runtime resume all
the clk provider devices before grabbing the clk prepare_lock during
disable unused.

- A build fix to provide an empty devm_clk_rate_exclusive_get()
function when CONFIG_COMMON_CLK=n

----------------------------------------------------------------
Daniel Golle (1):
clk: mediatek: mt7988-infracfg: fix clocks for 2nd PCIe port

Pin-yen Lin (1):
clk: mediatek: Do a runtime PM get on controllers during probe

Stephen Boyd (6):
clk: Remove prepare_lock hold assertion in __clk_release()
clk: Don't hold prepare_lock when calling kref_put()
clk: Initialize struct clk_core kref earlier
clk: Get runtime PM before walking tree during disable_unused
clk: Get runtime PM before walking tree for clk_summary
Merge branch 'clk-rpm' into clk-fixes

Uwe Kleine-König (1):
clk: Provide !COMMON_CLK dummy for devm_clk_rate_exclusive_get()

drivers/clk/clk.c | 173 ++++++++++++++++++++++-------
drivers/clk/mediatek/clk-mt7988-infracfg.c | 2 +-
drivers/clk/mediatek/clk-mtk.c | 15 +++
include/linux/clk.h | 5 +
4 files changed, 156 insertions(+), 39 deletions(-)

--
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git