Message ID | 5cbe596c.1c69fb81.e252.b9d0@mx.google.com |
---|---|
State | New |
Headers | show |
Series | clk/clk-next boot bisection: v5.1-rc1-142-ga55b079c961b on panda | expand |
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;
Hi Stephen, On Tue, Apr 23, 2019 at 5:56 AM Stephen Boyd <sboyd@kernel.org> wrote: > 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; Thank you, this fixes the issue on r8a73a4/ape6evm, r8a7740/armadillo, and sh73a0/kzm9g for me. Fixes: ecbf3f1795fda561 ("clk: fixed-factor: Let clk framework find parent") Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> For reference, the crash log on r8a73a4/ape6evm with earlycon enabled is: Unable to handle kernel paging request at virtual address 9d3cbbd0 pgd = (ptrval) [9d3cbbd0] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc6-ape6evm-05231-g1e7e3c938ac19d0f #92 Hardware name: Generic R8A73A4 (Flattened Device Tree) PC is at strlen+0x4/0x24 LR is at kstrdup+0x18/0x4c pc : [<c04f4d04>] lr : [<c01269c4>] psr: a00000d3 sp : c06cde80 ip : ef01e2c0 fp : c06cdee0 r10: c06d9408 r9 : 00000001 r8 : ef01e280 r7 : ef01e280 r6 : c02bc64c r5 : 00000cc0 r4 : 9d3cbbd0 r3 : 9d3cbbd0 r2 : c0506000 r1 : 00000cc0 r0 : 9d3cbbd0 Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000406a DAC: 00000051 Process swapper/0 (pid: 0, stack limit = 0x(ptrval)) Stack: (0xc06cde80 to 0xc06ce000) de80: ef021300 00000000 ef01e380 ef01e280 ef01e280 c02bc64c 600000d3 00000000 dea0: c0730db4 c014e1c4 ef000c00 ef01e380 c06d9408 ef01e380 00000000 ef7f2d54 dec0: ef7f2f58 ef01e680 00000001 c02bccdc ef01e380 c02bde58 00000001 00000000 dee0: 00000000 00000000 00000000 00000000 ef7f2f58 c0535838 c06d9408 c06cdee0 df00: c0730db4 60000001 00000020 9d3cbbd0 00000000 ef7f2d54 00000000 c06d9408 df20: c06d9408 00000001 ef01e688 c02bdff8 00000000 00000000 00000001 00000002 df40: ef7f2f58 00000002 00000001 9d3cbbd0 00000000 c06cdf6c ef01eb40 c0693db0 df60: 00000000 ef7f2d54 00000000 ef01e508 ef01e748 9d3cbbd0 00000007 00000000 df80: ef7e6f00 ffffffff c074ab40 c06d9400 c074ab40 00000001 c06b28e4 c0674488 dfa0: 00000000 c0671e78 ffffffff ffffffff 00000000 c067186c 00000000 c06d9408 dfc0: 00000000 c06b28e4 9d39bad0 00000000 00000000 c0671330 00000051 10c0387d dfe0: 00000f44 40f00000 412fc0f3 10c5387d 00000000 00000000 00000000 00000000 [<c04f4d04>] (strlen) from [<c01269c4>] (kstrdup+0x18/0x4c) [<c01269c4>] (kstrdup) from [<c02bc64c>] (__clk_register+0x150/0x6c0) [<c02bc64c>] (__clk_register) from [<c02bccdc>] (of_clk_hw_register+0x14/0x20) [<c02bccdc>] (of_clk_hw_register) from [<c02bde58>] (__clk_hw_register_fixed_factor+0xfc/0x114) [<c02bde58>] (__clk_hw_register_fixed_factor) from [<c02bdff8>] (_of_fixed_factor_clk_setup+0xec/0x15c) [<c02bdff8>] (_of_fixed_factor_clk_setup) from [<c0693db0>] (of_clk_init+0x1b4/0x258) [<c0693db0>] (of_clk_init) from [<c0674488>] (time_init+0x20/0x2c) [<c0674488>] (time_init) from [<c0671e78>] (start_kernel+0x318/0x474) [<c0671e78>] (start_kernel) from [<00000000>] ( (null)) Code: e12fff1e e1a0300c eafffff3 e1a03000 (e5d32000) ---[ end trace 8ec24e97351727c3 ]--- 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
* Stephen Boyd <sboyd@kernel.org> [691231 23:00]: > 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!!! This is great, thanks a lot! Hmm do you guys have some index page of all the found "boot bisection" issues that I can check every morning while drinking coffee? :) > > 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? Tested-by: Tony Lindgren <tony@atomide.com> > ----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;
On Tue, Apr 23, 2019 at 07:40:28AM -0700, Tony Lindgren wrote: > Hmm do you guys have some index page of all the found "boot bisection" > issues that I can check every morning while drinking coffee? :) Sadly there's no web UI for this bit of the system. The nearest would be trying to find the reports on LKML but that is suboptimal.
On 25/04/2019 18:28, Mark Brown wrote: > On Tue, Apr 23, 2019 at 07:40:28AM -0700, Tony Lindgren wrote: > >> Hmm do you guys have some index page of all the found "boot bisection" >> issues that I can check every morning while drinking coffee? :) > > Sadly there's no web UI for this bit of the system. The nearest would > be trying to find the reports on LKML but that is suboptimal. Quite: https://www.google.co.uk/search?q=lkml.org+%22boot%20bisection%3A%22 Also there aren't that many bisections, maybe a couple per month. I think we could cc the KernelCI reports mailing list, or maybe have a new list, for people who want to receive all the bisection reports. There should be more as we keep adding trees and especially when we start bisecting test suite results, not just boots. Guillaume
On Thu, Apr 25, 2019 at 06:44:16PM +0100, Guillaume Tucker wrote: > Also there aren't that many bisections, maybe a couple per month. > I think we could cc the KernelCI reports mailing list, or maybe > have a new list, for people who want to receive all the bisection > reports. There should be more as we keep adding trees and > especially when we start bisecting test suite results, not just > boots. This is the sort of thing that tends to go in phases as subsystems get worked on IME - if something is getting disruptive work done on it you can get a lot of issues for a while. You'd also see a lot more reports if all boards got reported.
Hi, * Guillaume Tucker <guillaume.tucker@collabora.com> [190425 17:44]: > On 25/04/2019 18:28, Mark Brown wrote: > > On Tue, Apr 23, 2019 at 07:40:28AM -0700, Tony Lindgren wrote: > > > >> Hmm do you guys have some index page of all the found "boot bisection" > >> issues that I can check every morning while drinking coffee? :) > > > > Sadly there's no web UI for this bit of the system. The nearest would > > be trying to find the reports on LKML but that is suboptimal. > > Quite: > > https://www.google.co.uk/search?q=lkml.org+%22boot%20bisection%3A%22 > > Also there aren't that many bisections, maybe a couple per month. > I think we could cc the KernelCI reports mailing list, or maybe > have a new list, for people who want to receive all the bisection > reports. There should be more as we keep adding trees and > especially when we start bisecting test suite results, not just > boots. OK well maybe still consider an automatically generated index page of last few tens "boot bisection" links at some point. Assuming LKML is always in Cc, and the "boot bisection" report has the breaking patch inlined, it should show up also at lore.kernel.org. So the next time around I have hard time finding out if somebody already bisected something, I'll just try: https://lore.kernel.org/lkml/?q=%22boot+bisection%22 Regards, Tony
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; init.num_parents = 1; hw = &fix->hw; - ret = clk_hw_register(dev, hw); + if (dev) + ret = clk_hw_register(dev, hw); + else + ret = of_clk_hw_register(np, hw); if (ret) { kfree(fix); hw = ERR_PTR(ret); @@ -97,6 +105,14 @@ struct clk_hw *clk_hw_register_fixed_factor(struct device *dev, return hw; } + +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) +{ + return __clk_hw_register_fixed_factor(dev, NULL, name, parent_name, -1, + flags, mult, div); +} EXPORT_SYMBOL_GPL(clk_hw_register_fixed_factor); struct clk *clk_register_fixed_factor(struct device *dev, const char *name, @@ -143,11 +159,10 @@ static const struct of_device_id set_rate_parent_matches[] = { { /* Sentinel */ }, }; -static struct clk *_of_fixed_factor_clk_setup(struct device_node *node) +static struct clk_hw *_of_fixed_factor_clk_setup(struct device_node *node) { - struct clk *clk; + struct clk_hw *hw; const char *clk_name = node->name; - const char *parent_name; unsigned long flags = 0; u32 div, mult; int ret; @@ -165,30 +180,28 @@ static struct clk *_of_fixed_factor_clk_setup(struct device_node *node) } of_property_read_string(node, "clock-output-names", &clk_name); - parent_name = of_clk_get_parent_name(node, 0); if (of_match_node(set_rate_parent_matches, node)) flags |= CLK_SET_RATE_PARENT; - clk = clk_register_fixed_factor(NULL, clk_name, parent_name, flags, - mult, div); - if (IS_ERR(clk)) { + hw = __clk_hw_register_fixed_factor(NULL, node, clk_name, NULL, 0, + flags, mult, div); + if (IS_ERR(hw)) { /* - * If parent clock is not registered, registration would fail. * Clear OF_POPULATED flag so that clock registration can be * attempted again from probe function. */ of_node_clear_flag(node, OF_POPULATED); - return clk; + return ERR_CAST(hw); } - ret = of_clk_add_provider(node, of_clk_src_simple_get, clk); + ret = of_clk_add_hw_provider(node, of_clk_hw_simple_get, hw); if (ret) { - clk_unregister(clk); + clk_hw_unregister_fixed_factor(hw); return ERR_PTR(ret); } - return clk; + return hw; } /** @@ -203,17 +216,17 @@ CLK_OF_DECLARE(fixed_factor_clk, "fixed-factor-clock", static int of_fixed_factor_clk_remove(struct platform_device *pdev) { - struct clk *clk = platform_get_drvdata(pdev); + struct clk_hw *clk = platform_get_drvdata(pdev); of_clk_del_provider(pdev->dev.of_node); - clk_unregister_fixed_factor(clk); + clk_hw_unregister_fixed_factor(clk); return 0; } static int of_fixed_factor_clk_probe(struct platform_device *pdev) { - struct clk *clk; + struct clk_hw *clk; /* * This function is not executed when of_fixed_factor_clk_setup