Quoting Sasha Levin (2024-04-23 04:03:01) > From: Stephen Boyd <sboyd@xxxxxxxxxx> > > [ Upstream commit 6f63af7511e7058f3fa4ad5b8102210741c9f947 ] > > We don't need to hold the prepare_lock when dropping a ref on a struct > clk_core. The release function is only freeing memory and any code with > a pointer reference has already unlinked anything pointing to the > clk_core. This reduces the holding area of the prepare_lock a bit. > > Note that we also don't call free_clk() with the prepare_lock held. > There isn't any reason to do that. You'll want the patch before this, 8358a76cfb47 ("clk: Remove prepare_lock hold assertion in __clk_release()"), to avoid lockdep warnings. And it looks like the problem was reported on v5.15.y so all 5 patches from the series would need a backport. 8358a76cfb47 clk: Remove prepare_lock hold assertion in __clk_release() 6f63af7511e7 clk: Don't hold prepare_lock when calling kref_put() 9d05ae531c2c clk: Initialize struct clk_core kref earlier e581cf5d2162 clk: Get runtime PM before walking tree during disable_unused 9d1e795f754d clk: Get runtime PM before walking tree for clk_summary