[PATCH v2 4/4] clk: scmi: Defer issue of SCMI_CLOCK_ATTRIBUTES

Marek Vasut marek.vasut at mailbox.org
Sat Nov 8 00:45:15 CET 2025


On 11/7/25 1:16 PM, Peng Fan wrote:

Hello Peng,

> On Fri, Nov 07, 2025 at 04:01:26AM +0100, Marek Vasut wrote:
>> Instead of resolving clock control flags using SCMI_CLOCK_ATTRIBUTES
>> during probe for each and every clock, resolve the clock control
>> flags using SCMI_CLOCK_ATTRIBUTES when the clock control flags are
>> first used. Because most clock are never used by U-Boot, this allows
>> reducing the amount of SCMI_CLOCK_ATTRIBUTES considerably, and this
>> improve probe time of the scmi clock driver and U-Boot start up time.
>>
>> On Renesas X5H, with 1700+ SCMI clock, the boot time improved by 1.7s .
>>
>>
>> static int scmi_clk_get_ctrl_flags(struct clk *clk, u32 *ctrl_flags)
>> {
>> +	struct udevice *dev = clk->dev->parent;
> 
> I will change this to "clk->dev", otherwise there is CI failure.

What kind of CI failure ?

> No need to use clk->dev->parent here. The core code will
> find out the scmi root device.
> 
> No need send v3, I could patch it in tree if no objections.
This change would be wrong, so please do not do that. Apply this patch:

"
diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c
index 4e8e5a262c8..99fd9679634 100644
--- a/drivers/clk/clk_scmi.c
+++ b/drivers/clk/clk_scmi.c
@@ -168,6 +168,7 @@ static int scmi_clk_gate(struct clk *clk, int enable)
  static int scmi_clk_get_ctrl_flags(struct clk *clk, u32 *ctrl_flags)
  {
         struct udevice *dev = clk->dev->parent;
+printf("clk->dev->name=%s clk->dev->parent->name=%s\n", clk->dev->name, 
clk->dev->parent->name);
         struct clk_scmi *clkscmi;
         u32 attributes;
         struct clk *c;
"

When U-Boot starts, the output looks this way:

"
clk->dev->name=scmi-325 clk->dev->parent->name=protocol at 14
"

Notice "clk->dev->parent->name=protocol at 14" , which is correct, 
therefore the clk->dev->parent is correct.

With the "clk->dev" change applied, the wrong device is used and the 
system starts producing failures:

"
scmi-over-mailbox scmi: Buffer too small: hdr->length:32, out_msg_sz:24
"

What kind of CI failure do you observe ?


More information about the U-Boot mailing list