Re: [PATCH RESEND v2 1/2] clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops

From: Marcel Ziswiler
Date: Wed Aug 31 2022 - 09:51:43 EST


Hi there

On Wed, 2022-08-31 at 09:40 +0200, Alexander Stein wrote:
> Am Dienstag, 30. August 2022, 15:40:53 CEST schrieb Chen-Yu Tsai:

[snip]

> > Thanks. So the part of the clock tree that's problematic is this:
> >
> >  osc_24m (fixed)
> >     sys_pll1_ref_sel (mux)
> >        sys_pll1 (imx pll14xx)
> >           sys_pll1_bypass (mux)
> >              sys_pll1_out (gate)
> >                 sys_pll1_800m (fixed factor)
> >                    main_axi (composite CLK_IS_CRITICAL)
> >
> > Would it be possible for you to produce a stack dump as well? And also
> > enable lock debugging? This likely still won't catch anything if it's
> > a spinlock deadlock though.
>
> Sure thing, I added a dump_stack() call to all of the above debug outputs as
> well as the name of the parent clock, just to be sure, and here is the result
> output:
> [    1.142386] io scheduler mq-deadline registered
> [    1.146902] io scheduler kyber registered
> [    1.177345] clk_core_prepare: clk: main_axi CLK_OPS_PARENT_ENABLE
> [    1.180713] clk_core_prepare: clk->parent: sys_pll1_800m
> [    1.186025] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.0.0-rc3-
> next-20220831+ #619 9c82e5b9075d735fa07e2c558603ffb720d72983
> [    1.197274] Hardware name: TQ-Systems i.MX8MPlus TQMa8MPxL on MBa8MPxL (DT)
> [    1.204275] Call trace:
> [    1.206723]  dump_backtrace+0xd8/0x120
> [    1.210485]  show_stack+0x14/0x50
> [    1.213811]  dump_stack_lvl+0x88/0xb0
> [    1.217486]  dump_stack+0x14/0x2c
> [    1.220811]  clk_core_prepare+0x1fc/0x240
> [    1.224834]  __clk_core_init+0x208/0x4dc
> [    1.228772]  __clk_register+0x160/0x240
> [    1.232622]  clk_hw_register+0x1c/0x5c
> [    1.236384]  __clk_hw_register_composite+0x1e8/0x2d0
> [    1.241372]  clk_hw_register_composite+0x40/0x50
> [    1.246009]  __imx8m_clk_hw_composite+0x130/0x210
> [    1.250734]  imx8mp_clocks_probe+0x13ac/0x3750
> [    1.255199]  platform_probe+0x64/0x100
> [    1.258959]  call_driver_probe+0x28/0x140
> [    1.262984]  really_probe+0xc0/0x334
> [    1.266572]  __driver_probe_device+0x84/0x144
> [    1.270947]  driver_probe_device+0x38/0x130
> [    1.275147]  __driver_attach+0xd4/0x240
> [    1.278997]  bus_for_each_dev+0x6c/0xbc
> [    1.282847]  driver_attach+0x20/0x30
> [    1.286436]  bus_add_driver+0x178/0x250
> [    1.290284]  driver_register+0x74/0x120
> [    1.294134]  __platform_driver_register+0x24/0x30
> [    1.298859]  imx8mp_clk_driver_init+0x18/0x20
> [    1.303234]  do_one_initcall+0x48/0x180
> [    1.307084]  do_initcalls+0x164/0x19c
> [    1.310759]  kernel_init_freeable+0xf4/0x138
> [    1.315047]  kernel_init+0x2c/0x140
> [    1.318549]  ret_from_fork+0x10/0x20
>
> Enabling lock debugging results in no additional output.

I also just bi-sected this to cause a similar hard lock-up on Verdin iMX8M Mini and Verdin iMX8M Plus running
next-20220831. Let me know if you need any further information.

Thanks!

> Best regards,
> Alexander

Cheers

Marcel