Hi Estevam, On Tue, Sep 15, 2015 at 5:09 AM, Fabio Estevam <festevam@xxxxxxxxx> wrote: > On Thu, Sep 10, 2015 at 6:47 AM, Felipe Tonello <eu@xxxxxxxxxxxxxxxxx> wrote: >> Hi, >> >> I have the following setup: >> >> DSP (read sensors and read/send MIDI) <- UART -> SOC (imx6) <- USB >> MIDI GADGET -> HOST >> >> When the throughput from the DSP is high, thus causing the throughput >> on the USB to be high as well, I get a Kernel Panic saying to increase >> the coherent_pool. I've used some crazy sizes like 1M, 4M and even 8M. >> Obviously when I increase, it takes longer to crash but it still >> crashes. >> >> I am using linux-fsl 3.14.28. > > Please test it with 4.2 or 4.3-rc1 kernel. I tested on 4.2 and still crashes. Same thing. But it doesn't say about the dma any longer. [ 148.712916] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 148.721135] pgd = 80004000 [ 148.723859] [00000000] *pgd=00000000 [ 148.727475] Internal error: Oops: 817 [#1] PREEMPT SMP ARM [ 148.732975] Modules linked in: snd_seq_midi snd_seq_dummy snd_seq_midi_event snd_seq usb_f_midi snd_rawmidi snd_seq_device g_midi libcomposite configfs snd_soc_fsl_ssi ime [ 148.761694] CPU: 0 PID: 3 Comm: ksoftirqd/0 Not tainted 4.2.0-mx6-seaboard-dirty #1 [ 148.769364] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) [ 148.775909] task: ee070980 ti: ee086000 task.ti: ee086000 [ 148.781342] PC is at _ep_queue.isra.18+0x178/0x480 [ 148.786150] LR is at 0xeae61480 [ 148.789309] pc : [<803c55a4>] lr : [<eae61480>] psr: 600f0093 [ 148.789309] sp : ee087de0 ip : 6e086000 fp : ee087e1c [ 148.800802] r10: 00004000 r9 : ee261010 r8 : eae62234 [ 148.806040] r7 : 00000000 r6 : 00000004 r5 : ee261774 r4 : eae62200 [ 148.812579] r3 : eae6223c r2 : 00000000 r1 : 00000001 r0 : fffffff4 [ 148.819124] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel [ 148.826534] Control: 10c5387d Table: 7cc2004a DAC: 00000015 [ 148.832294] Process ksoftirqd/0 (pid: 3, stack limit = 0xee086210) [ 148.838489] Stack: (0xee087de0 to 0xee088000) [ 148.842870] 7de0: 00000001 ecdc9f00 a00f0013 eae6223c ee087e24 ee261774 eae62200 a00f0013 [ 148.851069] 7e00: eae62200 ed69f000 ed69f134 ed69f134 ee087e3c ee087e20 803c6780 803c5438 [ 148.859268] 7e20: 803c673c 00000000 00000000 eaef9c00 ee087e7c ee087e40 7f16d850 803c6748 [ 148.867466] 7e40: ee261774 ed69f0f8 8004ed40 4b308e40 ee7adac0 ed69f13c 00000000 80761a00 [ 148.875664] 7e60: ee087e90 ed69f140 8072524c ee086010 ee087e8c ee087e80 7f16d8a4 7f16d428 [ 148.883861] 7e80: ee087ec4 ee087e90 800290f4 7f16d89c 800446b8 00000000 80761048 00000000 [ 148.892059] 7ea0: 00000000 8072c080 ee086000 00000100 40000000 8072c080 ee087f24 ee087ec8 [ 148.900257] 7ec0: 80029444 80029078 8072c6fc 00000000 04208040 8072c100 ffffc4e7 80545d48 [ 148.908455] 7ee0: 0000000a 80761a00 807252c8 8072c080 ee087ec8 ee086008 ee01fa40 ee086000 [ 148.916652] 7f00: ee01fa40 80731b2c 00000000 00000000 00000000 00000000 ee087f34 ee087f28 [ 148.924850] 7f20: 800295a4 8002931c ee087f5c ee087f38 80043314 80029570 ee070980 00000000 [ 148.933048] 7f40: ee01fa80 ee01fa40 800431c0 00000000 ee087fac ee087f60 8003ff28 800431cc [ 148.941246] 7f60: 1508a303 00000001 00000000 ee01fa40 00000000 00030003 ee087f78 ee087f78 [ 148.949442] 7f80: 00000000 00000000 ee087f88 ee087f88 ee01fa80 8003fe44 00000000 00000000 [ 148.957639] 7fa0: 00000000 ee087fb0 8000fb08 8003fe50 00000000 00000000 00000000 00000000 [ 148.965836] 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 148.974034] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 980f662a 0a9c0780 [ 148.982219] Backtrace: [ 148.984714] [<803c542c>] (_ep_queue.isra.18) from [<803c6780>] (ep_queue+0x44/0x64) [ 148.992382] r10:ed69f134 r9:ed69f134 r8:ed69f000 r7:eae62200 r6:a00f0013 r5:eae62200 [ 149.000319] r4:ee261774 [ 149.002909] [<803c673c>] (ep_queue) from [<7f16d850>] (f_midi_transmit+0x434/0x474 [usb_f_midi]) [ 149.011705] r6:eaef9c00 r5:00000000 r4:00000000 r3:803c673c [ 149.017476] [<7f16d41c>] (f_midi_transmit [usb_f_midi]) from [<7f16d8a4>] (f_midi_in_tasklet+0x14/0x18 [usb_f_midi]) [ 149.028009] r10:ee086010 r9:8072524c r8:ed69f140 r7:ee087e90 r6:80761a00 r5:00000000 [ 149.035947] r4:ed69f13c [ 149.038536] [<7f16d890>] (f_midi_in_tasklet [usb_f_midi]) from [<800290f4>] (tasklet_hi_action+0x88/0x124) [ 149.048219] [<8002906c>] (tasklet_hi_action) from [<80029444>] (__do_softirq+0x134/0x254) [ 149.048219] [<8002906c>] (tasklet_hi_action) from [<80029444>] (__do_softirq+0x134/0x254) [ 149.056407] r10:8072c080 r9:40000000 r8:00000100 r7:ee086000 r6:8072c080 r5:00000000 [ 149.064343] r4:00000000 [ 149.066917] [<80029310>] (__do_softirq) from [<800295a4>] (run_ksoftirqd+0x40/0x58) [ 149.074584] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:80731b2c r5:ee01fa40 [ 149.082518] r4:ee086000 [ 149.085098] [<80029564>] (run_ksoftirqd) from [<80043314>] (smpboot_thread_fn+0x154/0x268) [ 149.093397] [<800431c0>] (smpboot_thread_fn) from [<8003ff28>] (kthread+0xe4/0xfc) [ 149.100976] r8:00000000 r7:800431c0 r6:ee01fa40 r5:ee01fa80 r4:00000000 r3:ee070980 [ 149.108850] [<8003fe44>] (kthread) from [<8000fb08>] (ret_from_fork+0x14/0x2c) [ 149.116083] r7:00000000 r6:00000000 r5:8003fe44 r4:ee01fa80 [ 149.121840] Code: e3a01001 e594203c e50b2030 e593200c (e5821000) [ 149.127952] ---[ end trace fccfcfba9557690b ]--- gdb shows this calls: (gdb) list *(ep_queue+0x44) 0x803caae4 is in ep_queue (../include/linux/spinlock.h:372). 367 raw_spin_unlock_irq(&lock->rlock); 368 } 369 370 static inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) 371 { 372 raw_spin_unlock_irqrestore(&lock->rlock, flags); 373 } 374 375 static inline int spin_trylock_bh(spinlock_t *lock) 376 { (gdb) list *(_ep_queue) 0x803c9790 is in _ep_queue (../drivers/usb/chipidea/udc.c:756). 751 /** 752 * _ep_queue: queues (submits) an I/O request to an endpoint 753 * 754 * Caller must hold lock 755 */ 756 static int _ep_queue(struct usb_ep *ep, struct usb_request *req, 757 gfp_t __maybe_unused gfp_flags) 758 { 759 struct ci_hw_ep *hwep = container_of(ep, struct ci_hw_ep, ep); 760 struct ci_hw_req *hwreq = container_of(req, struct ci_hw_req, req); Any ideas on how to debug it? Thanks, Felipe -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html