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

From: Stephen Boyd
Date: Thu Jun 19 2025 - 20:30:17 EST


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@xxxxxxx
> Reviewed-by: Cristian Marussi <cristian.marussi@xxxxxxx>
> Reviewed-by: Sudeep Holla <sudeep.holla@xxxxxxx>
> Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
> ---

Applied to clk-fixes