Thread (7 messages) 7 messages, 2 authors, 2020-03-02

Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2020-02-27 13:36:42
Also in: linux-arm-kernel, lkml

Hi Marc,

Thanks for your patch!

On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez [off-list ref] wrote:
Using the helper produces simpler code, and smaller object size.
E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:

    text           data     bss     dec     hex filename
-   1708             80       0    1788     6fc drivers/clk/clk-devres.o
+   1524             80       0    1604     644 drivers/clk/clk-devres.o
And the size reduction could have been even more ;-)
Signed-off-by: Marc Gonzalez <redacted>
quoted hunk ↗ jump to hunk
--- a/drivers/clk/clk-devres.c
+++ b/drivers/clk/clk-devres.c
quoted hunk ↗ jump to hunk
@@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
 static int __devm_clk_bulk_get(struct device *dev, int num_clks,
                               struct clk_bulk_data *clks, bool optional)
 {
-       struct clk_bulk_devres *devres;
        int ret;

-       devres = devres_alloc(devm_clk_bulk_release,
-                             sizeof(*devres), GFP_KERNEL);
-       if (!devres)
-               return -ENOMEM;
-
        if (optional)
                ret = clk_bulk_get_optional(dev, num_clks, clks);
        else
                ret = clk_bulk_get(dev, num_clks, clks);
-       if (!ret) {
-               devres->clks = clks;
-               devres->num_clks = num_clks;
-               devres_add(dev, devres);
-       } else {
-               devres_free(devres);
-       }
+
+       if (ret)
+               return ret;
+
+       ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);

        return ret;
return devm_vadd(...);
 }
quoted hunk ↗ jump to hunk
@@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)

 void devm_clk_put(struct device *dev, struct clk *clk)
 {
-       int ret;
-
-       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
-
-       WARN_ON(ret);
+       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
Getting rid of "ret" is an unrelated change, which actually increases
kernel size, as the WARN_ON() parameter is stringified for the warning
message.

The rest looks good, so with the above fixed:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help