[PATCH v3] clk: scmi: Handle case where child clocks are initialized before their parents

Sudeep Holla sudeep.holla at arm.com
Fri Jun 13 06:43:35 PDT 2025


On Thu, Jun 12, 2025 at 02:56:57PM +0200, Sascha Hauer wrote:
> The SCMI clock driver currently assumes that parent clocks are always
> initialized before their children. However, this assumption can fail if
> a child clock is encountered before its parent during probe.
> 
> This leads to an issue during initialization of the parent_data array:
> 
>     sclk->parent_data[i].hw = hws[sclk->info->parents[i]];
> 
> If the parent clock's hardware structure has not been initialized yet,
> this assignment results in invalid data.
> 
> To resolve this, allocate all struct scmi_clk instances as a contiguous
> array at the beginning of the probe and populate the hws[] array
> upfront. This ensures that any parent referenced later is already
> initialized, regardless of the order in which clocks are processed.
> 
> Note that we can no longer free individual scmi_clk instances if
> scmi_clk_ops_init() fails which shouldn't be a problem if the SCMI
> platform has proper per-agent clock discovery.
> 
> Fixes: 65a8a3dd3b95f ("clk: scmi: Add support for clock {set,get}_parent")
> Reviewed-by: peng.fan at nxp.com
> Reviewed-by: Cristian Marussi <cristian.marussi at arm.com>
> Reviewed-by: Sudeep Holla <sudeep.holla at arm.com>

Mike/Stephen,

Please pick this up in your next round of fixes.

-- 
Regards,
Sudeep



More information about the linux-arm-kernel mailing list