Re: [next] arm64: db410c: WARNING: CPU: 0 PID: 1 at drivers/opp/core.c:2265 dev_pm_opp_clear_config+0x174/0x17c

From: Naresh Kamboju
Date: Wed Jun 15 2022 - 15:26:27 EST


Hi Viresh,

On Wed, 15 Jun 2022 at 10:55, Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote:
>
> On 15-06-22, 02:49, Naresh Kamboju wrote:
> > Following kernel crash reported while booting arm64 db410c board with
> > Linux next-20220614 [1] kfence enabled on this kernel.
> >
> > Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
> >
> > Boot log:
> > ---------
> > [ 0.850420] WARNING: CPU: 0 PID: 1 at drivers/opp/core.c:2265
>
> A print like this normally comes when we hit a WARN or something.
>
> Here is the line 2265 from above tag
>
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/opp/core.c?h=next-20220614#n2265
>
> which doesn't have any such WARNs there. I wonder where exactly we hit the WARN
> here and why it isn't showing up properly.
>
> > dev_pm_opp_clear_config+0x174/0x17c
> > [ 0.850447] Modules linked in:
> > [ 0.850459] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
> > 5.19.0-rc1-next-20220610 #1
> > [ 0.850470] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
> > [ 0.850477] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> > [ 0.850489] pc : dev_pm_opp_clear_config+0x174/0x17c
> > [ 0.850501] lr : dt_cpufreq_probe+0x1e4/0x4a0
> > [ 0.850513] sp : ffff80000802bb00
> > [ 0.850518] x29: ffff80000802bb00 x28: ffff80000ada1c30 x27: 0000000000000000
> > [ 0.850538] x26: 00000000fffffdfb x25: ffff00000311f410 x24: ffff00000389ec90
> > [ 0.850557] x23: ffff80000a9eea98 x22: ffff80000a9eed00 x21: ffff80000ada1b68
> > [ 0.850576] x20: ffff00000389ec80 x19: ffff00003fc41308 x18: ffffffffffffffff
> > [ 0.850595] x17: ffff800009f21700 x16: ffff8000080955c0 x15: ffff0000031c2a1c
> > [ 0.850614] x14: 0000000000000001 x13: 0a6b636f6c632064 x12: 6e69662074276e64
> > [ 0.850632] x11: 0000000000000040 x10: 0000000000000020 x9 : ffff800009006964
> > [ 0.850650] x8 : 0000000000000020 x7 : ffffffffffffffff x6 : 0000000000000000
> > [ 0.850668] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
> > [ 0.850686] x2 : 0000000000000004 x1 : 0000000000000000 x0 : 0000000000000000
> > [ 0.850704] Call trace:
> > [ 0.850708] dev_pm_opp_clear_config+0x174/0x17c
> > [ 0.850722] platform_probe+0x74/0xf0
>
> Nevertheless, I see one place from where such a WARN can be hit, which can be
> fixed with:
>
> diff --git a/drivers/opp/core.c b/drivers/opp/core.c
> index 58eae9de4b91..c3d4058d33fc 100644
> --- a/drivers/opp/core.c
> +++ b/drivers/opp/core.c
> @@ -2437,7 +2437,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_set_config);
> */
> void dev_pm_opp_clear_config(struct opp_table *opp_table)
> {
> - if (WARN_ON(!opp_table))
> + if (!opp_table)
> return;
>
> _opp_detach_genpd(opp_table);
>
> Not sure it fixes the issue you reported here though.
>
> Can you run the tests for my branch once, it has the updated fix as well.

As per your suggestion, I have tested [1] this tree and branch and it worked.
The reported kernel warning has been fixed.
Thank you.

Tested-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>

>
> git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
>
> --
> viresh

[1] https://lkft.validation.linaro.org/scheduler/job/5179605

--
Linaro LKFT
https://lkft.linaro.org