complete_all warning with 3 waiters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,

I am running the Linux RT kernel 4.14.78-rt47 on an i.MX8MMini when i encountered the swake_up_all_locked() warning with "complete_all() with 3 waiters" on the sdma controller probe.


[ 9.455488] complete_all() with 3 waiters
[ 9.455498] -----------[ cut here ]-----------
[ 9.455515] WARNING: CPU: 1 PID: 3450 at /usr/src/kernel/kernel/sched/swait.c:49 swake_up_all_locked+0xa4/0xb8
[ 9.455529] CPU: 1 PID: 3450 Comm: systemd-udevd Tainted: G O 4.14.78-rt47+g66620c3 #1
[ 9.455531] Hardware name: FSL i.MX8MM EVK board (DT)
[ 9.455534] task: ffff800072895a00 task.stack: ffff00001a5f0000
[ 9.455539] PC is at swake_up_all_locked+0xa4/0xb8
[ 9.455543] LR is at swake_up_all_locked+0xa4/0xb8
[ 9.455548] pc : [<ffff0000081095bc>] lr : [<ffff0000081095bc>] pstate: 800001c5
[ 9.455550] sp : ffff00001a5f3cc0
[ 9.455552] x29: ffff00001a5f3cc0 x28: ffff800072895a00
[ 9.455559] x27: ffff000008d81000 x26: 0000000000000040
[ 9.455562] x25: 0000000000000124 x24: 0000000000000015
[ 9.455568] x23: 0000000000000002 x22: ffff800076c73430
[ 9.455572] x21: 0000000000000003 x20: ffff800076c73428
[ 9.455576] x19: ffff000009eabce0 x18: 0000000000000001
[ 9.455580] x17: 0000ffffb547bcb0 x16: ffff000008209700
[ 9.455584] x15: ffff0000094c3000 x14: 00000000fffffff0
[ 9.455588] x13: ffff000009651b18 x12: ffff0000094c3000
[ 9.455591] x11: 0000000000000000 x10: ffff000009651000
[ 9.455595] x9 : 0000000000000000 x8 : ffff0000096610a3
[ 9.455599] x7 : 0000000000000000 x6 : 0000000005ca3ab7
[ 9.455602] x5 : 0000000000000000 x4 : 0000000000000000
[ 9.455606] x3 : ffffffffffffffff x2 : 0000800074ae6000
[ 9.455610] x1 : ffff800072895a00 x0 : 000000000000001d
[ 9.455616] Call trace:
[ 9.455620] Exception stack(0xffff00001a5f3b80 to 0xffff00001a5f3cc0)
[ 9.455624] 3b80: 000000000000001d ffff800072895a00 0000800074ae6000 ffffffffffffffff
[ 9.455628] 3ba0: 0000000000000000 0000000000000000 0000000005ca3ab7 0000000000000000
[ 9.455632] 3bc0: ffff0000096610a3 0000000000000000 ffff000009651000 0000000000000000
[ 9.455637] 3be0: ffff0000094c3000 ffff000009651b18 00000000fffffff0 ffff0000094c3000
[ 9.455641] 3c00: ffff000008209700 0000ffffb547bcb0 0000000000000001 ffff000009eabce0
[ 9.455646] 3c20: ffff800076c73428 0000000000000003 ffff800076c73430 0000000000000002
[ 9.455652] 3c40: 0000000000000015 0000000000000124 0000000000000040 ffff000008d81000
[ 9.455657] 3c60: ffff800072895a00 ffff00001a5f3cc0 ffff0000081095bc ffff00001a5f3cc0
[ 9.455663] 3c80: ffff0000081095bc 00000000800001c5 ffff800076c73430 0000000000000000
[ 9.455668] 3ca0: 0000ffffffffffff 0000000000000004 ffff00001a5f3cc0 ffff0000081095bc
[ 9.455674] [<ffff0000081095bc>] swake_up_all_locked+0xa4/0xb8
[ 9.455681] [<ffff000008109bcc>] complete_all+0x34/0x50
[ 9.455690] [<ffff0000086cc338>] firmware_loading_store+0x168/0x218
[ 9.455696] [<ffff0000086ab7a0>] dev_attr_store+0x18/0x28
[ 9.455704] [<ffff000008288f6c>] sysfs_kf_write+0x3c/0x50
[ 9.455709] [<ffff000008288208>] kernfs_fop_write+0x118/0x1e8
[ 9.455714] [<ffff000008209190>] __vfs_write+0x18/0x118
[ 9.455718] [<ffff000008209484>] vfs_write+0xa4/0x1b0
[ 9.455724] [<ffff000008209748>] SyS_write+0x48/0xb0
[ 9.455729] Exception stack(0xffff00001a5f3ec0 to 0xffff00001a5f4000)
[ 9.455733] 3ec0: 000000000000000f 0000aaab040673f0 0000000000000002 0000ffffb556e190
[ 9.455738] 3ee0: 0000000000000040 0000000000000000 0000000000000000 000000000000000a
[ 9.455742] 3f00: 0000000000000040 0000ffffb53c8c90 0000000000000040 0000000000000000
[ 9.455746] 3f20: 0000000000000001 000000000000270f 0000000000000000 0000000000000000
[ 9.455750] 3f40: 0000aaaad73f9948 0000ffffb547bcb0 0000ffffb5569a70 000000000000000f
[ 9.455754] 3f60: 0000aaab040673f0 0000aaab0406a6e0 0000000000000002 0000aaab040673f0
[ 9.455758] 3f80: 0000000000000002 0000aaab040418c0 0000000000000001 0000000000000b12
[ 9.455763] 3fa0: 0000aaaad73b85a8 0000ffffcaab8510 0000ffffb54884dc 0000ffffcaab8510
[ 9.455767] 3fc0: 0000ffffb54dbd4c 0000000020000000 000000000000000f 0000000000000040
[ 9.455771] 3fe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 9.455776] [<ffff000008083b58>] __sys_trace_return+0x0/0x4
[ 9.455779] --[ end trace 0000000000000002 ]--
[ 9.457052] imx-sdma 302b0000.dma-controller: loaded firmware 4.4
[ 9.458193] imx-sdma 302c0000.dma-controller: loaded firmware 4.4
[ 9.481511] imx-sdma 30bd0000.dma-controller: loaded firmware 4.4

In fact, there is 3 sdma controller devices on the target pointing to the same firmware file and the imx-sdma driver is requesting the firmware asynchronously with request_firmware_nowait(). The request_firmware API in linux is making all waiters, requesting the same firmware file, wait on the same completion which triggers this warning.
I checked the linux-5.4.y-rt branch but the same warning is there.
My question is: is there any good reason for the value of 2 in the warning condition ? It seems to me like a warning put earlier to check if we trigger this condition and work on some unresolved issues. Do we need another filter like the pm_in_action ? 
Any idea/suggestion is definitely appreciated

Best Regards,
Marouen.




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux