Re: [PATCH] clk: rockchip: Use flexible array for clock table
From: Rosen Penev
Date: Fri Sep 04 2026 - 17:43:07 EST
On Mon, May 11, 2026 at 1:41 PM Brian Masney <bmasney@xxxxxxxxxx> wrote:
>
> + Gustavo
>
> On Mon, May 11, 2026 at 12:08:56PM -0700, Rosen Penev wrote:
> > On Mon, May 11, 2026 at 9:06 AM Brian Masney <bmasney@xxxxxxxxxx> wrote:
> > >
> > > Hi Rosen,
> > >
> > > On Sun, May 10, 2026 at 08:22:52PM -0700, Rosen Penev wrote:
> > > > Store the clock lookup table in the Rockchip clock provider
> > > > allocation instead of allocating it separately.
> > > >
> > > > This ties the table lifetime directly to the provider and removes a
> > > > separate allocation failure path while preserving the clk_onecell_data
> > > > lookup interface.
> > > >
> > > > Assisted-by: Codex:GPT-5.5
> > > > Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> > > > ---
> > > > drivers/clk/rockchip/clk.c | 17 ++++-------------
> > > > drivers/clk/rockchip/clk.h | 2 ++
> > > > 2 files changed, 6 insertions(+), 13 deletions(-)
> > > >
> > > > diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c
> > > > index ee8c79b938d3..dbb4b6f33abb 100644
> > > > --- a/drivers/clk/rockchip/clk.c
> > > > +++ b/drivers/clk/rockchip/clk.c
> > > > @@ -359,26 +359,21 @@ static struct rockchip_clk_provider *rockchip_clk_init_base(
> > > > unsigned long nr_clks, bool has_late_clocks)
> > > > {
> > > > struct rockchip_clk_provider *ctx;
> > > > - struct clk **clk_table;
> > > > struct clk *default_clk_val;
> > > > int i;
> > > >
> > > > default_clk_val = ERR_PTR(has_late_clocks ? -EPROBE_DEFER : -ENOENT);
> > > >
> > > > - ctx = kzalloc_obj(struct rockchip_clk_provider);
> > > > + ctx = kzalloc_flex(*ctx, clk_table, nr_clks);
> > > > if (!ctx)
> > > > return ERR_PTR(-ENOMEM);
> > > >
> > > > - clk_table = kzalloc_objs(struct clk *, nr_clks);
> > > > - if (!clk_table)
> > > > - goto err_free;
> > > > -
> > > > for (i = 0; i < nr_clks; ++i)
> > > > - clk_table[i] = default_clk_val;
> > > > + ctx->clk_table[i] = default_clk_val;
> > > >
> > > > - ctx->reg_base = base;
> > > > - ctx->clk_data.clks = clk_table;
> > > > ctx->clk_data.clk_num = nr_clks;
> > > > + ctx->clk_data.clks = ctx->clk_table;
> > >
> > > Where's the __counted_by? Also struct clk_onecell_data is embedded
> > > inside struct rockchip_clk_provider, and I'm not sure offhand how
> > > that'll work.
> > Not present. __counted_by does not work with embedded struct members.
> > No need to add one IMO.
>
> I'll be honest that I'm not sure what's correct here. I added Gustavo
> since I saw comments from him before about these types of changes.
Anything else? The comments AFAIK were about descriptions of why the
counting variable assignment was moved. There's no counting variable
here.
>
> Brian
>