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

From: Viresh Kumar
Date: Wed Jun 15 2022 - 01:25:12 EST


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.

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

--
viresh