Re: clk/clk-next boot bisection: v5.1-rc1-142-ga55b079c961b on panda

From: Stephen Boyd
Date: Mon Apr 22 2019 - 21:06:44 EST


Quoting kernelci.org bot (2019-04-22 17:16:44)
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * This automated bisection report was sent to you on the basis *
> * that you may be involved with the breaking commit it has *
> * found. No manual investigation has been done to verify it, *
> * and the root cause of the problem may be somewhere else. *
> * Hope this helps! *
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
> clk/clk-next boot bisection: v5.1-rc1-142-ga55b079c961b on panda
>
> Summary:
> Start: a55b079c961b Merge branch 'clk-hisi' into clk-next
> Details: https://kernelci.org/boot/id/5cbe3cdb59b514fd22fe6025
> Plain log: https://storage.kernelci.org//clk/clk-next/v5.1-rc1-142-ga55b079c961b/arm/omap2plus_defconfig/gcc-7/lab-baylibre/boot-omap4-panda.txt
> HTML log: https://storage.kernelci.org//clk/clk-next/v5.1-rc1-142-ga55b079c961b/arm/omap2plus_defconfig/gcc-7/lab-baylibre/boot-omap4-panda.html
> Result: ecbf3f1795fd clk: fixed-factor: Let clk framework find parent
>
> Checks:
> revert: PASS
> verify: PASS
>
> Parameters:
> Tree: clk
> URL: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
> Branch: clk-next
> Target: panda
> CPU arch: arm
> Lab: lab-baylibre
> Compiler: gcc-7
> Config: omap2plus_defconfig
> Test suite: boot
>
> Breaking commit found:

Awesome! I LOVE IT!!!

>
> diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
> index 241b3f8c61a9..5b09f2cdb7de 100644
> --- a/drivers/clk/clk-fixed-factor.c
> +++ b/drivers/clk/clk-fixed-factor.c
> @@ -64,12 +64,14 @@ const struct clk_ops clk_fixed_factor_ops = {
> };
> EXPORT_SYMBOL_GPL(clk_fixed_factor_ops);
>
> -struct clk_hw *clk_hw_register_fixed_factor(struct device *dev,
> - const char *name, const char *parent_name, unsigned long flags,
> - unsigned int mult, unsigned int div)
> +static struct clk_hw *
> +__clk_hw_register_fixed_factor(struct device *dev, struct device_node *np,
> + const char *name, const char *parent_name, int index,
> + unsigned long flags, unsigned int mult, unsigned int div)
> {
> struct clk_fixed_factor *fix;
> struct clk_init_data init;
> + struct clk_parent_data pdata = { .index = index };
> struct clk_hw *hw;
> int ret;
>
> @@ -85,11 +87,17 @@ struct clk_hw *clk_hw_register_fixed_factor(struct device *dev,
> init.name = name;
> init.ops = &clk_fixed_factor_ops;
> init.flags = flags | CLK_IS_BASIC;
> - init.parent_names = &parent_name;
> + if (parent_name)
> + init.parent_names = &parent_name;
> + else
> + init.parent_data = &pdata;

Ick. I realized that 'init.parent_names' here can be full of junk! Let's
initialize it properly. Maybe that makes this all better?

----8<----
diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
index 5b09f2cdb7de..2d988a7585d5 100644
--- a/drivers/clk/clk-fixed-factor.c
+++ b/drivers/clk/clk-fixed-factor.c
@@ -70,7 +70,7 @@ __clk_hw_register_fixed_factor(struct device *dev, struct device_node *np,
unsigned long flags, unsigned int mult, unsigned int div)
{
struct clk_fixed_factor *fix;
- struct clk_init_data init;
+ struct clk_init_data init = { };
struct clk_parent_data pdata = { .index = index };
struct clk_hw *hw;
int ret;