主板死机引发对complete的学习

 故事背景:V2的主板回来后,用V1的软件下载后,出现了重启,抓串口log,报如下错误。

[    3.096106] c0 cmt2300a_probe
[    3.096340] c0 Unable to handle kernel NULL pointer dereference at virtual address 00000000
[    3.096345] c0 pgd = (ptrval)
[    3.096349] c0 [00000000] *pgd=00000000
[    3.096365] c0 Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[    3.096371] c0 Modules linked in:
[    3.096385] c0 CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.133 #276
[    3.096389] c0 Hardware name: Generic DT based system
[    3.096395] c0 task: (ptrval) task.stack: (ptrval)
[    3.096409] c0 PC is at __wake_up_common+0x9c/0x16c
[    3.096417] c0 LR is at __wake_up_locked+0x28/0x30
[    3.096423] c0 pc : [<c01751e4>]    lr : [<c01753c4>]    psr: a0000193
[    3.096429] c0 sp : ee28ba40  ip : ee28ba78  fp : ee28ba74
[    3.096434] c0 r10: 00000003  r9 : ec0d2000  r8 : ee28a008
[    3.096440] c0 r7 : 00000001  r6 : c137f03c  r5 : c137f034  r4 : 00000000
[    3.096445] c0 r3 : fffffff4  r2 : 00000000  r1 : 00000003  r0 : c137f038
[    3.096453] c0 Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
[    3.096459] c0 Control: 10c5383d  Table: 8000406a  DAC: 00000051
[    3.096464] c0 Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
[    3.096470] c0 Stack: (0xee28ba40 to 0xee28c000)
[    3.096483] c0 ba40: 00000000 00000000 00010020 c137f038 c137f034 20000193 00000000 ee28a008
[    3.096495] c0 ba60: ec0d2000 ee28bb08 ee28ba8c ee28ba78 c01753c4 c0175154 00000000 00000000
[    3.096507] c0 ba80: ee28baac ee28ba90 c0175f3c c01753a8 00000001 c137eee0 ec0d2068 0000004c
[    3.096519] c0 baa0: ee28bac4 ee28bab0 c063b998 c0175f00 c063b95c ecfc4940 ee28bb04 ee28bac8
[    3.096531] c0 bac0: c0190044 c063b968 edd64a24 80000193 00000001 00000000 f0a31000 c1009208
[    3.096543] c0 bae0: ec0d2068 ec0d2000 00000000 ee28bb78 eca32340 60000013 ee28bb2c ee28bb08
[    3.096555] c0 bb00: c0190210 c018ff58 00000000 257676ae ee28bb2c ec0d2000 ec0d2068 c1009208
[    3.096567] c0 bb20: ee28bb4c ee28bb30 c01902ac c01901e4 00000000 ec0d2000 ec0d2068 c1009208
[    3.096579] c0 bb40: ee28bb64 ee28bb50 c01947f8 c0190270 ed74cc00 c1061688 ee28bb74 ee28bb68
[    3.096591] c0 bb60: c018f21c c01946bc ee28bba4 ee28bb78 c04fcdf0 c018f200 00000001 257676ae
[    3.096602] c0 bb80: 00000000 00000000 c0faf5f4 0000002b 00000001 ee28a000 ee28bbb4 ee28bba8
[    3.096614] c0 bba0: c018f21c c04fcd34 ee28bbdc ee28bbb8 c018f7fc c018f200 ee28bc00 000000a2
[    3.096626] c0 bbc0: ee28bc00 c11133b0 c100a330 ec0d2000 ee28bbfc ee28bbe0 c0101574 c018f770
[    3.096638] c0 bbe0: c0a793b4 60000013 ffffffff ee28bc34 ee28bc64 ee28bc00 c010da30 c0101518
[    3.096650] c0 bc00: ec0d2068 00000000 2dd81000 60000093 60000013 00000000 c1009208 00000001
[    3.096662] c0 bc20: ec0d2000 ec0d2068 60000013 ee28bc64 ee28bc50 ee28bc50 c0a793b0 c0a793b4
[    3.096674] c0 bc40: 60000013 ffffffff 00000051 00000000 00000007 ecfc4940 ee28bd1c ee28bc68
[    3.096685] c0 bc60: c0198448 c0a79374 00000000 ecfc5cb4 ee28bc8c ee28bc80 c0a78f60 c015333c
[    3.096698] c0 bc80: ee28bcc4 ee28bc90 c032da1c c0a78f3c c0cb98d1 257676ae c1009208 ecfc5e00
[    3.096710] c0 bca0: c0a80388 c1350f1c c1009208 ec0d20d0 ec0d2068 ec0d2000 ee28bce4 ee28bcc8
[    3.096722] c0 bcc0: c032dd78 c032d960 ee28bce4 ecfc5a80 ec0d2000 c01985d4 ee28bd1c ee28bce8
[    3.096734] c0 bce0: c01985d4 c0a7535c 0000004c 257676ae 36370013 ecfc4940 00000000 00000000
[    3.096746] c0 bd00: 0000004c ec0d20d0 ec0d2068 ec0d2000 ee28bd5c ee28bd20 c01925ec c0198390
[    3.096757] c0 bd20: c1088cbc c063b95c 60000013 ec0d203c ee28bd4c 00000000 ecfc4940 ec0d2000
[    3.096769] c0 bd40: ec0d2014 0000004c 00000000 00000000 ee28bd8c ee28bd60 c0192904 c01920c0
[    3.096780] c0 bd60: 00000001 c137eee0 ed77ea00 c1088cbc 00000000 c137b084 00000000 00000000
[    3.096792] c0 bd80: ee28bdb4 ee28bd90 c063b778 c019280c c0d29697 00000000 ee28bdb4 c063b5c0
[    3.096804] c0 bda0: ed77ea10 c1088cbc ee28bdd4 ee28bdb8 c05ee074 c063b5cc c05ee014 ed77ea10
[    3.096817] c0 bdc0: c137b080 c1088cbc ee28be14 ee28bdd8 c05ebdc8 c05ee020 ee28bdf4 ee28bde8
[    3.096829] c0 bde0: c07cfc48 c07ce194 ee28be14 ed77ea10 ed77ea44 c1088cbc c05ec048 c0fa50c8
[    3.096840] c0 be00: c1149d40 c1149d40 ee28be34 ee28be18 c05ec0e4 c05ebbfc 00000001 00000000
[    3.096852] c0 be20: c1009208 c1088cbc ee28be64 ee28be38 c05eaa70 c05ec054 c0a78e90 ed3dd858
[    3.096864] c0 be40: ed7824b4 257676ae c1088cbc 00000000 ecfc5a00 c1086a20 ee28be74 ee28be68
[    3.096876] c0 be60: c05eb6cc c05ea9d8 ee28be9c ee28be78 c05eb06c c05eb6b0 c0d298b3 ee28be88
[    3.096888] c0 be80: c1088cbc c0f38d10 c1009208 00000000 ee28beb4 ee28bea0 c05ecf04 c05eaf90
[    3.096901] c0 bea0: ee28a000 c0f38d10 ee28bec4 ee28beb8 c05edfb4 c05ece64 ee28bed4 ee28bec8
[    3.096913] c0 bec0: c0f38d30 c05edf80 ee28bf4c ee28bed8 c0101dd4 c0f38d1c c0147338 c0f00688
[    3.096924] c0 bee0: 00000000 ee28be00 ee28bee4 c0df3708 0000013f c0df3708 00000000 00000006
[    3.096936] c0 bf00: 00000006 00000140 c0df1e08 c0f0067c ee28bf34 eedb9fbb eedb9fd2 257676ae
[    3.096948] c0 bf20: 00000000 257676ae 00000006 c1009208 00000140 c0f74034 c0fa50c8 c1149d40
[    3.096959] c0 bf40: ee28bf94 ee28bf50 c0f01064 c0101d1c 00000006 00000006 00000000 c0f0067c
[    3.096970] c0 bf60: 00000000 257676ae 00000000 00000000 c0a70598 00000000 00000000 00000000
[    3.096981] c0 bf80: 00000000 00000000 ee28bfac ee28bf98 c0a705b0 c0f00e94 ee28a000 00000000
[    3.096992] c0 bfa0: 00000000 ee28bfb0 c01086f4 c0a705a4 00000000 00000000 00000000 00000000
[    3.097002] c0 bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    3.097012] c0 bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[    3.097034] c0 [<c01751e4>] (__wake_up_common) from [<c01753c4>] (__wake_up_locked+0x28/0x30)
[    3.097047] c0 [<c01753c4>] (__wake_up_locked) from [<c0175f3c>] (complete+0x48/0x58)
[    3.097064] c0 [<c0175f3c>] (complete) from [<c063b998>] (send_handle+0x3c/0x48)
[    3.097082] c0 [<c063b998>] (send_handle) from [<c0190044>] (__handle_irq_event_percpu+0xf8/0x28c)
[    3.097096] c0 [<c0190044>] (__handle_irq_event_percpu) from [<c0190210>] (handle_irq_event_percpu+0x38/0x8c)
[    3.097108] c0 [<c0190210>] (handle_irq_event_percpu) from [<c01902ac>] (handle_irq_event+0x48/0x6c)
[    3.097121] c0 [<c01902ac>] (handle_irq_event) from [<c01947f8>] (handle_edge_irq+0x148/0x174)
[    3.097134] c0 [<c01947f8>] (handle_edge_irq) from [<c018f21c>] (generic_handle_irq+0x28/0x38)
[    3.097148] c0 [<c018f21c>] (generic_handle_irq) from [<c04fcdf0>] (sprd_gpio_plus_irq_handler+0xc8/0x10c)
[    3.097162] c0 [<c04fcdf0>] (sprd_gpio_plus_irq_handler) from [<c018f21c>] (generic_handle_irq+0x28/0x38)
[    3.097173] c0 [<c018f21c>] (generic_handle_irq) from [<c018f7fc>] (__handle_domain_irq+0x98/0xc0)
[    3.097187] c0 [<c018f7fc>] (__handle_domain_irq) from [<c0101574>] (gic_handle_irq+0x68/0xfc)
[    3.097200] c0 [<c0101574>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.097206] c0 Exception stack(0xee28bc00 to 0xee28bc48)
[    3.097217] c0 bc00: ec0d2068 00000000 2dd81000 60000093 60000013 00000000 c1009208 00000001
[    3.097230] c0 bc20: ec0d2000 ec0d2068 60000013 ee28bc64 ee28bc50 ee28bc50 c0a793b0 c0a793b4
[    3.097236] c0 bc40: 60000013 ffffffff
[    3.097251] c0 [<c010da30>] (__irq_svc) from [<c0a793b4>] (_raw_spin_unlock_irqrestore+0x4c/0x80)
[    3.097265] c0 [<c0a793b4>] (_raw_spin_unlock_irqrestore) from [<c0198448>] (register_handler_proc+0xc4/0x114)
[    3.097278] c0 [<c0198448>] (register_handler_proc) from [<c01925ec>] (__setup_irq+0x538/0x6c0)
[    3.097292] c0 [<c01925ec>] (__setup_irq) from [<c0192904>] (request_threaded_irq+0x104/0x14c)
[    3.097305] c0 [<c0192904>] (request_threaded_irq) from [<c063b778>] (cmt2300a_probe+0x1b8/0x39c)
[    3.097319] c0 [<c063b778>] (cmt2300a_probe) from [<c05ee074>] (platform_drv_probe+0x60/0xb0)
[    3.097335] c0 [<c05ee074>] (platform_drv_probe) from [<c05ebdc8>] (driver_probe_device+0x1d8/0x458)
[    3.097350] c0 [<c05ebdc8>] (driver_probe_device) from [<c05ec0e4>] (__driver_attach+0x9c/0x100)
[    3.097362] c0 [<c05ec0e4>] (__driver_attach) from [<c05eaa70>] (bus_for_each_dev+0xa4/0xd0)
[    3.097376] c0 [<c05eaa70>] (bus_for_each_dev) from [<c05eb6cc>] (driver_attach+0x28/0x30)
[    3.097389] c0 [<c05eb6cc>] (driver_attach) from [<c05eb06c>] (bus_add_driver+0xe8/0x240)
[    3.097403] c0 [<c05eb06c>] (bus_add_driver) from [<c05ecf04>] (driver_register+0xac/0xf0)
[    3.097416] c0 [<c05ecf04>] (driver_register) from [<c05edfb4>] (__platform_driver_register+0x40/0x54)
[    3.097430] c0 [<c05edfb4>] (__platform_driver_register) from [<c0f38d30>] (cmt2300a_module_driver_init+0x20/0x28)
[    3.097444] c0 [<c0f38d30>] (cmt2300a_module_driver_init) from [<c0101dd4>] (do_one_initcall+0xc4/0x184)
[    3.097458] c0 [<c0101dd4>] (do_one_initcall) from [<c0f01064>] (kernel_init_freeable+0x1dc/0x2c0)
[    3.097472] c0 [<c0f01064>] (kernel_init_freeable) from [<c0a705b0>] (kernel_init+0x18/0x130)
[    3.097485] c0 [<c0a705b0>] (kernel_init) from [<c01086f4>] (ret_from_fork+0x14/0x20)
[    3.097497] c0 Code: e243300c e2866004 e283200c e1560002 (1593500c) 
[    3.097511] c0 ---[ end trace c0b259d55b738a6e ]---
[    3.102065] c1 [saudio] Error: sblock_receive dst 5, channel 13 result is -5
[    3.111313] c0 Kernel panic - not syncing: Fatal exception in interrupt
[    3.113004] c2 [saudio] Error: initialization failed
[    3.115365] c0 sprd-sysdump: vaddr is (ptrval), paddr is (ptrval).
[    3.118160] c2 [saudio] saudio_ctrl_thread,saudio: waiting for modem boot handshake,dst 5,channel 14
[    3.120815] c0 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:0)
[    3.120895] c5 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:5)
[    3.120898] c4 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:4)
[    3.120903] c1 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:1)
[    3.120909] c3 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:3)
[    3.120912] c6 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:6)
[    3.120916] c7 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:7)
[    3.120965] c4 CPU4: stopping
[    3.120974] c4 CPU: 4 PID: 0 Comm: swapper/4 Tainted: G      D         4.14.133 #276
[    3.120977] c4 Hardware name: Generic DT based system
[    3.120998] c4 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    3.121008] c4 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    3.121019] c4 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    3.121027] c4 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    3.121035] c4 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.121039] c4 Exception stack(0xee2c3f28 to 0xee2c3f70)
[    3.121045] c4 3f20:                   00000000 00000000 2ddc9000 60000093 00000000 ee2c2000
[    3.121052] c4 3f40: c1009208 ee2c3f98 c1009230 00000000 00000000 ee2c3f84 ee2c3f78 ee2c3f78
[    3.121057] c4 3f60: c0109058 c010905c 60000013 ffffffff
[    3.121065] c4 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    3.121074] c4 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    3.121084] c4 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    3.121092] c4 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    3.121099] c4 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    3.121108] c4 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    3.121117] c1 CPU1: stopping
[    3.121127] c1 CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.14.133 #276
[    3.121131] c1 Hardware name: Generic DT based system
[    3.121150] c1 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    3.121163] c1 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    3.121176] c1 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    3.121189] c1 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    3.121200] c1 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.121205] c1 Exception stack(0xee2bdf28 to 0xee2bdf70)
[    3.121215] c1 df20:                   00000000 00000000 2dd93000 60000093 00000000 ee2bc000
[    3.121228] c1 df40: c1009208 ee2bdf98 c1009230 00000000 00000000 ee2bdf84 ee2bdf78 ee2bdf78
[    3.121236] c1 df60: c0109058 c010905c 60000013 ffffffff
[    3.121249] c1 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    3.121262] c1 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    3.121274] c1 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    3.121286] c1 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    3.121299] c1 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    3.121310] c1 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    3.121316] c7 CPU7: stopping
[    3.121322] c7 CPU: 7 PID: 0 Comm: swapper/7 Tainted: G      D         4.14.133 #276
[    3.121324] c7 Hardware name: Generic DT based system
[    3.121335] c7 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    3.121342] c7 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    3.121349] c7 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    3.121357] c7 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    3.121363] c7 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.121366] c7 Exception stack(0xee2d1f28 to 0xee2d1f70)
[    3.121372] c7 1f20:                   00000000 00000000 2ddff000 60000093 00000000 ee2d0000
[    3.121379] c7 1f40: c1009208 ee2d1f98 c1009230 00000000 00000000 ee2d1f84 ee2d1f78 ee2d1f78
[    3.121383] c7 1f60: c0109058 c010905c 60000013 ffffffff
[    3.121390] c7 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    3.121397] c7 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    3.121403] c7 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    3.121411] c7 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    3.121418] c7 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    3.121424] c7 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    3.121429] c6 CPU6: stopping
[    3.121435] c6 CPU: 6 PID: 0 Comm: swapper/6 Tainted: G      D         4.14.133 #276
[    3.121437] c6 Hardware name: Generic DT based system
[    3.121447] c6 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    3.121454] c6 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    3.121461] c6 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    3.121468] c6 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    3.121475] c6 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.121478] c6 Exception stack(0xee2c7f28 to 0xee2c7f70)
[    3.121483] c6 7f20:                   00000000 00000000 2dded000 60000093 00000000 ee2c6000
[    3.121490] c6 7f40: c1009208 ee2c7f98 c1009230 00000000 00000000 ee2c7f84 ee2c7f78 ee2c7f78
[    3.121495] c6 7f60: c0109058 c010905c 60000013 ffffffff
[    3.121501] c6 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    3.121508] c6 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    3.121515] c6 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    3.121522] c6 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    3.121529] c6 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    3.121536] c6 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    3.121542] c3 CPU3: stopping
[    3.121551] c3 CPU: 3 PID: 0 Comm: swapper/3 Tainted: G      D         4.14.133 #276
[    3.121555] c3 Hardware name: Generic DT based system
[    3.121572] c3 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    3.121584] c3 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    3.121598] c3 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    3.121609] c3 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    3.121620] c3 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.121625] c3 Exception stack(0xee2c1f28 to 0xee2c1f70)
[    3.121635] c3 1f20:                   00000000 00000000 2ddb7000 60000093 00000000 ee2c0000
[    3.121648] c3 1f40: c1009208 ee2c1f98 c1009230 00000000 00000000 ee2c1f84 ee2c1f78 ee2c1f78
[    3.121656] c3 1f60: c0109058 c010905c 60000013 ffffffff
[    3.121668] c3 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    3.121680] c3 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    3.121691] c3 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    3.121704] c3 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    3.121716] c3 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    3.121727] c3 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    3.123762] c2 sprd-sysdump: (sprd_debug_save_context) context saved(CPU:2)
[    3.132093] c5 CPU5: stopping
[    4.325972] c0 SMP: failed to stop secondary CPUs
[    4.333133] c5 CPU: 5 PID: 0 Comm: swapper/5 Tainted: G      D         4.14.133 #276
[    4.677720] c5 Hardware name: Generic DT based system
[    4.682751] c5 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    4.690706] c5 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    4.698149] c5 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    4.705764] c5 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    4.713551] c5 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    4.721249] c5 Exception stack(0xee2c5f28 to 0xee2c5f70)
[    4.726531] c5 5f20:                   00000000 00000000 2dddb000 60000093 00000000 ee2c4000
[    4.734927] c5 5f40: c1009208 ee2c5f98 c1009230 00000000 00000000 ee2c5f84 ee2c5f78 ee2c5f78
[    4.743318] c5 5f60: c0109058 c010905c 60000013 ffffffff
[    4.748599] c5 [<c010da30>] (__irq_svc) from [<c010905c>] (arch_cpu_idle+0x40/0x4c)
[    4.756216] c5 [<c010905c>] (arch_cpu_idle) from [<c0a78d68>] (default_idle_call+0x40/0x48)
[    4.764523] c5 [<c0a78d68>] (default_idle_call) from [<c01762d0>] (do_idle+0x110/0x29c)
[    4.772485] c5 [<c01762d0>] (do_idle) from [<c0176728>] (cpu_startup_entry+0x28/0x2c)
[    4.780273] c5 [<c0176728>] (cpu_startup_entry) from [<c010f814>] (secondary_start_kernel+0x150/0x198)
[    4.789532] c5 [<c010f814>] (secondary_start_kernel) from [<80101aac>] (0x80101aac)
[    4.797147] c2 CPU2: stopping
[    4.800093] c2 CPU: 2 PID: 156 Comm: saudio-5-14 Tainted: G      D         4.14.133 #276
[    4.808136] c2 Hardware name: Generic DT based system
[    4.813168] c2 [<c0111d74>] (unwind_backtrace) from [<c010cda0>] (show_stack+0x20/0x24)
[    4.821125] c2 [<c010cda0>] (show_stack) from [<c0a5bbbc>] (dump_stack+0xa4/0xd8)
[    4.828569] c2 [<c0a5bbbc>] (dump_stack) from [<c010fc70>] (handle_IPI+0x1d4/0x3e0)
[    4.836182] c2 [<c010fc70>] (handle_IPI) from [<c01015dc>] (gic_handle_irq+0xd0/0xfc)
[    4.843971] c2 [<c01015dc>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    4.851667] c2 Exception stack(0xec0b3dd0 to 0xec0b3e18)
[    4.856948] c2 3dc0:                                     20000093 00000000 2dda5000 20000013
[    4.865345] c2 3de0: ec0b2000 00000000 c13510f0 00000000 00000000 00000021 c1157bc4 ec0b3e7c
[    4.873738] c2 3e00: ec0b3e20 ec0b3e20 c018d8b4 c018d8bc 60000013 ffffffff
[    4.880577] c2 [<c010da30>] (__irq_svc) from [<c018d8bc>] (console_unlock+0x518/0x574)
[    4.888452] c2 [<c018d8bc>] (console_unlock) from [<c018dac4>] (vprintk_emit+0x1ac/0x200)
[    4.896586] c2 [<c018dac4>] (vprintk_emit) from [<c018dcf0>] (vprintk_default+0x30/0x38)
[    4.904635] c2 [<c018dcf0>] (vprintk_default) from [<c018f198>] (vprintk_func+0x174/0x1a8)
[    4.912856] c2 [<c018f198>] (vprintk_func) from [<c018e970>] (printk+0x38/0x58)
[    4.920129] c2 [<c018e970>] (printk) from [<c063a0fc>] (saudio_ctrl_thread+0x288/0x7d8)
[    4.928091] c2 [<c063a0fc>] (saudio_ctrl_thread) from [<c0147b74>] (kthread+0x148/0x164)
[    4.936137] c2 [<c0147b74>] (kthread) from [<c01086f4>] (ret_from_fork+0x14/0x20)
[    5.341688] c0 sprd-sysdump: 
[    5.344560] c0 sprd-sysdump: *****************************************************
[    5.352090] c0 sprd-sysdump: *                                                   *
[    5.359618] c0 sprd-sysdump: *  Sysdump enter, preparing debug info to dump ...  *
[    5.367147] c0 sprd-sysdump: *                                                   *
[    5.374675] c0 sprd-sysdump: *****************************************************
[    5.382204] c0 sprd-sysdump: 
[    5.385152] c0 sprd-sysdump: reason: Fatal exception in interrupt, sprd_sysdump_info->crash_key: 0
[    5.394069] c0 sprd-sysdump: R0: 00000033
[    5.398042] c0 sprd-sysdump: addr: ffffffb3
[    5.402195] c0 sprd-sysdump: reg value invalid !!!
[    5.406955] c0 sprd-sysdump: reg[0] paddr: 0
[    5.411196] c0 sprd-sysdump: R1: 00010003
[    5.415177] c0 sprd-sysdump: addr: 0000ff83
[    5.419330] c0 sprd-sysdump: reg value invalid !!!
[    5.424090] c0 sprd-sysdump: reg[1] paddr: 0
[    5.428331] c0 sprd-sysdump: R2: 00000048
[    5.432311] c0 sprd-sysdump: addr: ffffffc8
[    5.436464] c0 sprd-sysdump: reg value invalid !!!
[    5.441224] c0 sprd-sysdump: reg[2] paddr: 0
[    5.445466] c0 sprd-sysdump: R3: c106a334
[    5.449446] c0 sprd-sysdump: addr: c106a2b4
[    5.453600] c0 sprd-sysdump: reg[3] paddr: 8106a2b4
[    5.458446] c0 sprd-sysdump: R4: c106a43c
[    5.462426] c0 sprd-sysdump: addr: c106a3bc
[    5.466581] c0 sprd-sysdump: reg[4] paddr: 8106a3bc
[    5.471427] c0 sprd-sysdump: R5: c114a330
[    5.475407] c0 sprd-sysdump: addr: c114a2b0
[    5.479561] c0 sprd-sysdump: reg[5] paddr: 8114a2b0
[    5.484408] c0 sprd-sysdump: R6: c137557c
[    5.488387] c0 sprd-sysdump: addr: c13754fc
[    5.492542] c0 sprd-sysdump: reg[6] paddr: 813754fc
[    5.497388] c0 sprd-sysdump: R7: 00000000
[    5.501368] c0 sprd-sysdump: addr: ffffff80
[    5.505522] c0 sprd-sysdump: reg value invalid !!!
[    5.510282] c0 sprd-sysdump: reg[7] paddr: 0
[    5.514523] c0 sprd-sysdump: R8: 00000000
[    5.518503] c0 sprd-sysdump: addr: ffffff80
[    5.522656] c0 sprd-sysdump: reg value invalid !!!
[    5.527416] c0 sprd-sysdump: reg[8] paddr: 0
[    5.531657] c0 sprd-sysdump: R9: c106a334
[    5.535637] c0 sprd-sysdump: addr: c106a2b4
[    5.539792] c0 sprd-sysdump: reg[9] paddr: 8106a2b4
[    5.544638] c0 sprd-sysdump: R10: 00000005
[    5.548704] c0 sprd-sysdump: addr: ffffff85
[    5.552857] c0 sprd-sysdump: reg value invalid !!!
[    5.557619] c0 sprd-sysdump: reg[10] paddr: 0
[    5.561945] c0 sprd-sysdump: R11: ee28b834
[    5.566013] c0 sprd-sysdump: addr: ee28b7b4
[    5.570167] c0 sprd-sysdump: reg[11] paddr: ae28b7b4
[    5.575100] c0 sprd-sysdump: R12: ee28b758
[    5.579167] c0 sprd-sysdump: addr: ee28b6d8
[    5.583321] c0 sprd-sysdump: reg[12] paddr: ae28b6d8
[    5.588254] c0 sprd-sysdump: R13: ee28b800
[    5.592320] c0 sprd-sysdump: addr: ee28b780
[    5.596475] c0 sprd-sysdump: reg[13] paddr: ae28b780
[    5.601407] c0 sprd-sysdump: R14: c018dacc
[    5.605474] c0 sprd-sysdump: addr: c018da4c
[    5.609629] c0 sprd-sysdump: reg[14] paddr: 8018da4c
[    5.614561] c0 sprd-sysdump: R15: c053bb08
[    5.618628] c0 sprd-sysdump: addr: c053ba88
[    5.622783] c0 sprd-sysdump: reg[15] paddr: 8053ba88
[    5.627715] c0 sprd-sysdump: size : 2560
[    5.631611] c0 sprd-sysdump: kernel_magic: K2.0
[    5.631611] c0  
[    5.631615] c0 sprd-sysdump: ---     regs_info       ---
[    5.631615] c0  
[    5.637926] c0 sprd-sysdump: arch:              0
[    5.637926] c0  
[    5.645023] c0 sprd-sysdump: num:               16
[    5.645023] c0  
[    5.651512] c0 sprd-sysdump: paddr:         0
[    5.651512] c0  
[    5.658090] c0 sprd-sysdump: size:          72
[    5.658090] c0  
[    5.664234] c0 sprd-sysdump: ---     regs_memory_info        ---
[    5.664234] c0  
[    5.670466] c0 sprd-sysdump: reg[0] paddr:          0
[    5.670466] c0  
[    5.678254] c0 sprd-sysdump: reg[1] paddr:          0
[    5.678254] c0  
[    5.685090] c0 sprd-sysdump: reg[2] paddr:          0
[    5.685090] c0  
[    5.691926] c0 sprd-sysdump: reg[3] paddr:          8106a2b4
[    5.691926] c0  
[    5.698763] c0 sprd-sysdump: reg[4] paddr:          8106a3bc
[    5.698763] c0  
[    5.706206] c0 sprd-sysdump: reg[5] paddr:          8114a2b0
[    5.706206] c0  
[    5.713648] c0 sprd-sysdump: reg[6] paddr:          813754fc
[    5.713648] c0  
[    5.721089] c0 sprd-sysdump: reg[7] paddr:          0
[    5.721089] c0  
[    5.728532] c0 sprd-sysdump: reg[8] paddr:          0
[    5.728532] c0  
[    5.735369] c0 sprd-sysdump: reg[9] paddr:          8106a2b4
[    5.735369] c0  
[    5.742205] c0 sprd-sysdump: reg[10] paddr:          0
[    5.742205] c0  
[    5.749648] c0 sprd-sysdump: reg[11] paddr:          ae28b7b4
[    5.749648] c0  
[    5.756571] c0 sprd-sysdump: reg[12] paddr:          ae28b6d8
[    5.756571] c0  
[    5.764100] c0 sprd-sysdump: reg[13] paddr:          ae28b780
[    5.764100] c0  
[    5.771629] c0 sprd-sysdump: reg[14] paddr:          8018da4c
[    5.771629] c0  
[    5.779158] c0 sprd-sysdump: reg[15] paddr:          8053ba88
[    5.779158] c0  
[    5.786686] c0 sprd-sysdump: per_reg_memory_size:    256
[    5.786686] c0  
[    5.794214] c0 sprd-sysdump: valid_reg_num:          10
[    5.794214] c0  
[    5.801311] c0 sprd-sysdump: reg_memory_all_size:    2560
[    5.801311] c0  
[    5.808320] c0 sprd-sysdump: ---     section_info_total        ---
[    5.808320] c0  
[    5.815504] c0 sprd-sysdump: Here are 0 sections, Total size : 0
[    5.829435] c0 sprd-sysdump: total_num:        0
[    5.829435] c0  
[    5.829439] c0 sprd-sysdump: total_size        0
[    5.829439] c0  
[    5.835840] c0 sprd-sysdump: minidump_data_size:     a48
[    5.835840] c0  
[    5.842259] c0 sprd-sysdump: no regs  or not a bugon,do nothing
[    5.855578] c0 sprd-sysdump: kernel_magic:             K2.0
[    5.855578] c0  
[    5.855583] c0 sprd-sysdump: exception_serialno:  
[    5.855583] c0  
[    5.862874] c0 sprd-sysdump: exception_kernel_version: Linux version 4.14.133 (a1001@ubuntu01) (gcc version 4.9.x 20150123 (prerelease) (GCC)) #276 SMP PREEMPT Fri Sep 18 18:08:26 CST 2020
[    5.862874] c0 
[    5.862874] c0  
[    5.869450] c0 sprd-sysdump: exception_reboot_reason:  
[    5.869450] c0  
[    5.889699] c0 sprd-sysdump: exception_panic_reason:   Fatal exception in interrupt
[    5.889699] c0  
[    5.896710] c0 sprd-sysdump: exception_time:           1970-01-01:00:00:05
[    5.896710] c0  
[    5.906142] c0 sprd-sysdump: exception_file_info:      not-bugon
[    5.906142] c0  
[    5.914796] c0 sprd-sysdump: exception_task_id:        1
[    5.914796] c0  
[    5.922584] c0 sprd-sysdump: exception_task_family:      [swapper/0, 1]
[    5.922584] c0  
[    5.929681] c0 sprd-sysdump: exception_pc_symbol:      [<(ptrval)>] sysdump_enter+0xe4/0x560
[    5.929681] c0  
[    5.938089] c0 sprd-sysdump: exception_stack_info:     [<(ptrval)>] get_exception_stack_info+0xf8/0x204       
[    5.938089] c0 [<(ptrval)>] prepare_exception_info.constprop.4+0x11c/0x16c    
[    5.938089] c0 [<(ptrval)>] sysdump_enter+0x3d8/0x560 
[    5.938089] c0 [<(ptrval)>] panic+0xfc/0x268  
[    5.938089] c0 [<(ptrval)>] die+0x2dc/0x324   
[    5.938089] c0 [<(ptrval)>] __do_kernel_fault.part.0+0x64/0x84
[    5.938089] c0 [<(ptrval)>] do_page_fault+0x310/0x320 
[    5.938089] c0 [<(ptrval)>] do_translation_fault+0x2c/0xbc    
[    5.938089] c0 [<(ptrval)>] do_DataAbort+0x50/0xe8    
[    5.938089] c0 [<(ptrval)>] __dabt_svc+0x5c/0xa0      
[    5.938089] c0 [<(ptrval)>] __wake_up_common+0x9c/0x16c       
[    5.938089] c0 [<(ptrval)>] __wake_up_common+0x9c/0x16c       
[    5.938089] c0 [<(ptrval)>] __wake_up_locked+0x28/0x30
[    5.938089] c0 [<(ptrval)>] complete+0x48/0x58
[    5.938089] c0 [<(ptrval)>] send_handle+0x3c/0x48     
[    6.032488] c0 sprd-sysdump: 
[    6.035430] c0 sprd-sysdump: *****************************************************
[    6.042959] c0 sprd-sysdump: *                                                   *
[    6.050488] c0 sprd-sysdump: *  Try to reboot system ...                         *
[    6.058016] c0 sprd-sysdump: *                                                   *
[    6.065545] c0 sprd-sysdump: *****************************************************
[    6.073074] c0 sprd-sysdump: 
[    8.076409] c0 Reboot failed -- System halted

关键log 

[    3.097034] c0 [<c01751e4>] (__wake_up_common) from [<c01753c4>] (__wake_up_locked+0x28/0x30)
[    3.097047] c0 [<c01753c4>] (__wake_up_locked) from [<c0175f3c>] (complete+0x48/0x58)
[    3.097064] c0 [<c0175f3c>] (complete) from [<c063b998>] (send_handle+0x3c/0x48)
[    3.097082] c0 [<c063b998>] (send_handle) from [<c0190044>] (__handle_irq_event_percpu+0xf8/0x28c)
[    3.097096] c0 [<c0190044>] (__handle_irq_event_percpu) from [<c0190210>] (handle_irq_event_percpu+0x38/0x8c)
[    3.097108] c0 [<c0190210>] (handle_irq_event_percpu) from [<c01902ac>] (handle_irq_event+0x48/0x6c)
[    3.097121] c0 [<c01902ac>] (handle_irq_event) from [<c01947f8>] (handle_edge_irq+0x148/0x174)
[    3.097134] c0 [<c01947f8>] (handle_edge_irq) from [<c018f21c>] (generic_handle_irq+0x28/0x38)
[    3.097148] c0 [<c018f21c>] (generic_handle_irq) from [<c04fcdf0>] (sprd_gpio_plus_irq_handler+0xc8/0x10c)
[    3.097162] c0 [<c04fcdf0>] (sprd_gpio_plus_irq_handler) from [<c018f21c>] (generic_handle_irq+0x28/0x38)
[    3.097173] c0 [<c018f21c>] (generic_handle_irq) from [<c018f7fc>] (__handle_domain_irq+0x98/0xc0)
[    3.097187] c0 [<c018f7fc>] (__handle_domain_irq) from [<c0101574>] (gic_handle_irq+0x68/0xfc)
[    3.097200] c0 [<c0101574>] (gic_handle_irq) from [<c010da30>] (__irq_svc+0x70/0xb0)
[    3.097206] c0 Exception stack(0xee28bc00 to 0xee28bc48)
[    3.097217] c0 bc00: ec0d2068 00000000 2dd81000 60000093 60000013 00000000 c1009208 00000001
[    3.097230] c0 bc20: ec0d2000 ec0d2068 60000013 ee28bc64 ee28bc50 ee28bc50 c0a793b0 c0a793b4
[    3.097236] c0 bc40: 60000013 ffffffff
[    3.097251] c0 [<c010da30>] (__irq_svc) from [<c0a793b4>] (_raw_spin_unlock_irqrestore+0x4c/0x80)
[    3.097265] c0 [<c0a793b4>] (_raw_spin_unlock_irqrestore) from [<c0198448>] (register_handler_proc+0xc4/0x114)
[    3.097278] c0 [<c0198448>] (register_handler_proc) from [<c01925ec>] (__setup_irq+0x538/0x6c0)
[    3.097292] c0 [<c01925ec>] (__setup_irq) from [<c0192904>] (request_threaded_irq+0x104/0x14c)
[    3.097305] c0 [<c0192904>] (request_threaded_irq) from [<c063b778>] (cmt2300a_probe+0x1b8/0x39c)
[    3.097319] c0 [<c063b778>] (cmt2300a_probe) from [<c05ee074>] (platform_drv_probe+0x60/0xb0)
[    3.097335] c0 [<c05ee074>] (platform_drv_probe) from [<c05ebdc8>] (driver_probe_device+0x1d8/0x458)
[    3.097350] c0 [<c05ebdc8>] (driver_probe_device) from [<c05ec0e4>] (__driver_attach+0x9c/0x100)
[    3.097362] c0 [<c05ec0e4>] (__driver_attach) from [<c05eaa70>] (bus_for_each_dev+0xa4/0xd0)
[    3.097376] c0 [<c05eaa70>] (bus_for_each_dev) from [<c05eb6cc>] (driver_attach+0x28/0x30)
[    3.097389] c0 [<c05eb6cc>] (driver_attach) from [<c05eb06c>] (bus_add_driver+0xe8/0x240)
[    3.097403] c0 [<c05eb06c>] (bus_add_driver) from [<c05ecf04>] (driver_register+0xac/0xf0)
[    3.097416] c0 [<c05ecf04>] (driver_register) from [<c05edfb4>] (__platform_driver_register+0x40/0x54)
[    3.097430] c0 [<c05edfb4>] (__platform_driver_register) from [<c0f38d30>] (cmt2300a_module_driver_init+0x20/0x28)
[    3.097444] c0 [<c0f38d30>] (cmt2300a_module_driver_init) from [<c0101dd4>] (do_one_initcall+0xc4/0x184)
[    3.097458] c0 [<c0101dd4>] (do_one_initcall) from [<c0f01064>] (kernel_init_freeable+0x1dc/0x2c0)
[    3.097472] c0 [<c0f01064>] (kernel_init_freeable) from [<c0a705b0>] (kernel_init+0x18/0x130)
[    3.097485] c0 [<c0a705b0>] (kernel_init) from [<c01086f4>] (ret_from_fork+0x14/0x20)

在申请中断时,刚好中断来了,调用了complete函数

出问题的代码如下 

static irqreturn_t send_handle(int irq, void *dev_id)
{
	complete(&tx_done_complete);
}

int xxx_probe(){
	ret = request_irq(virq,send_handle,IRQF_TRIGGER_RISING,"cmt2300a_send_complete", NULL);
	init_completion(&tx_done_complete);
}

初看没有什么问题,但由于这次回板,cmt2300a由于缺货,暂时没贴,导致引脚悬空(之前有贴芯片,引脚被芯片拉低),电平不稳定,刚好进入了中断,init_complete函数还没跑,就调用了complete函数。

解决方案也很简单,调整下函数执行顺序。

刚开始时,没有设置printk的等级为7(死机时会自动设置串口log等级为7),默认是1,只看到了如下log

    5.938089] c0 [<(ptrval)>] prepare_exception_info.constprop.4+0x11c/0x16c    
[    5.938089] c0 [<(ptrval)>] sysdump_enter+0x3d8/0x560 
[    5.938089] c0 [<(ptrval)>] panic+0xfc/0x268  
[    5.938089] c0 [<(ptrval)>] die+0x2dc/0x324   
[    5.938089] c0 [<(ptrval)>] __do_kernel_fault.part.0+0x64/0x84
[    5.938089] c0 [<(ptrval)>] do_page_fault+0x310/0x320 
[    5.938089] c0 [<(ptrval)>] do_translation_fault+0x2c/0xbc    
[    5.938089] c0 [<(ptrval)>] do_DataAbort+0x50/0xe8    
[    5.938089] c0 [<(ptrval)>] __dabt_svc+0x5c/0xa0      
[    5.938089] c0 [<(ptrval)>] __wake_up_common+0x9c/0x16c       
[    5.938089] c0 [<(ptrval)>] __wake_up_common+0x9c/0x16c       
[    5.938089] c0 [<(ptrval)>] __wake_up_locked+0x28/0x30
[    5.938089] c0 [<(ptrval)>] complete+0x48/0x58
[    5.938089] c0 [<(ptrval)>] send_handle+0x3c/0x48     

猜测wait_for_completion还没调用,就调用complete函数会有bug,于是把相关的代码都look了一遍,分享下

https://blog.csdn.net/mike8825/article/details/108678777

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值