Forums › Devices › OSD32MP15x › Dunfell kernel oops on boot in pmic_irq
On our custom board we are seeing a kernel oops at boot every time. The dump of it
indicates that a bad address for a notification client was used. The specific call
stack item “stpmic1_boost_irq_handler” implies that there is a REGULATOR_EVENT_OVER_CURRENT
event and when the driver info is passed off to the “_notifier_call_chain” routine, the
notifier pointer is invalid. That crashes that k-thread, and as near as I can tell it
never restarts. Also, if that subsystem never restarts, what is broken?
We have made no mods to the kernel and the dev tree is pretty close to stock. How do
I fix this error? Here is the oops:
[ 2.777396] 8<— cut here —
[ 2.779771] Unable to handle kernel NULL pointer dereference at virtual address 0000004c
[ 2.787796] pgd = 84ade257
[ 2.790512] [0000004c] *pgd=00000000
[ 2.794063] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[ 2.799363] Modules linked in:
[ 2.802412] CPU: 0 PID: 63 Comm: irq/52-pmic_irq Not tainted 5.10.10 #1
[ 2.809018] Hardware name: STM32 (Device Tree Support)
[ 2.814165] PC is at blocking_notifier_call_chain+0x4/0x8c
[ 2.819638] LR is at regulator_notifier_call_chain+0xc/0x14
[ 2.825200] pc : [<c0149b00>] lr : [<c066c04c>] psr: 60000013
[ 2.831463] sp : c2823eb8 ip : 00000001 fp : c0cc7af8
[ 2.836682] r10: c0cc7f28 r9 : c2816c00 r8 : 0000000e
[ 2.841902] r7 : c282d26c r6 : c282d200 r5 : c120f968 r4 : c28098c0
[ 2.848426] r3 : 00000000 r2 : 00000000 r1 : 00000002 r0 : 00000034
[ 2.854952] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 2.862084] Control: 10c5387d Table: c000406a DAC: 00000051
[ 2.867828] Process irq/52-pmic_irq (pid: 63, stack limit = 0xa4a6ff98)
[ 2.874439] Stack: (0xc2823eb8 to 0xc2824000)
[ 2.878791] 3ea0: c28098c0 c120f968
[ 2.886975] 3ec0: c282d200 c282d26c 0000000e c2816c00 c0cc7f28 c066c04c c28098c0 c0683374
[ 2.895153] 3ee0: c282f4c0 00000000 c282d200 c0182ddc 00000020 00000024 c1bf0d00 00000001
[ 2.903331] 3f00: 0000000e c07431c4 00000000 00000000 00000000 c1104d08 c2823f6c c280b140
[ 2.911508] 3f20: c1bf0c00 c2822000 00000001 c280b140 c017f0d0 ffffe000 00000000 c017f0ec
[ 2.919686] 3f40: c1bf0c00 c280b164 c2822000 c017f404 60000013 00000000 c017f1fc c1104d08
[ 2.927864] 3f60: 00000000 c280b1c0 c280b180 c2822000 c19e7a8c c017f2d0 c280b140 c280b1e4
[ 2.936040] 3f80: 00000000 c014818c 00000000 c280b180 c0148048 00000000 00000000 00000000
[ 2.944217] 3fa0: 00000000 00000000 00000000 c0100148 00000000 00000000 00000000 00000000
[ 2.952392] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 2.960568] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[ 2.968761] [<c0149b00>] (blocking_notifier_call_chain) from [<c066c04c>] (regulator_notifier_call_chain+0xc/0x14)
[ 2.979108] [<c066c04c>] (regulator_notifier_call_chain) from [<c0683374>] (stpmic1_boost_irq_handler+0x4c/0x184)
[ 2.989371] [<c0683374>] (stpmic1_boost_irq_handler) from [<c0182ddc>] (handle_nested_irq+0xc4/0x130)
[ 2.998592] [<c0182ddc>] (handle_nested_irq) from [<c07431c4>] (regmap_irq_thread+0x488/0x580)
[ 3.007202] [<c07431c4>] (regmap_irq_thread) from [<c017f0ec>] (irq_thread_fn+0x1c/0x78)
[ 3.015290] [<c017f0ec>] (irq_thread_fn) from [<c017f404>] (irq_thread+0x134/0x200)
[ 3.022950] [<c017f404>] (irq_thread) from [<c014818c>] (kthread+0x144/0x180)
[ 3.030084] [<c014818c>] (kthread) from [<c0100148>] (ret_from_fork+0x14/0x2c)
[ 3.037295] Exception stack(0xc2823fb0 to 0xc2823ff8)
[ 3.042345] 3fa0: 00000000 00000000 00000000 00000000
[ 3.050526] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 3.058703] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 3.065319] Code: eb00a3ef e1a00004 e8bd81f0 e92d47f0 (e5904018)
[ 3.071451] —[ end trace ac0edff7ca2f27e5 ]—
The board uses a OSD32MP157F-512, it‘s distro is dunfell. Have not tried it on kirkstone as I can’t
get the M4 tty bridge to work in it yet.
C Spengler,
It looks like PMIC_BSTOUT is experiencing an over current condition. I have seen this condition trigger when there is a large amount of capacitance on BSTOUT leading to an inrush current situation that exceeds the current limit on this rail. Please remove the large bypass capacitors and check if the issue persists.
Best,
Neeraj
Octavo Systems LLC all rights reserved
OCTAVO is registered in the U.S. Patent and Trademark Office. OSD, C-SiP, and the Octavo Logo are trademarks of Octavo Systems LLC.
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields