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

Stephen Boyd sboyd at kernel.org
Thu Jun 19 17:30:08 PDT 2025


Quoting Sascha Hauer (2025-06-12 05:56:57)
> 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>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---

Applied to clk-fixes



More information about the linux-arm-kernel mailing list