Hi Estevam,
On Tue, Sep 15, 2015 at 5:09 AM, Fabio Estevam <[email protected]> wrote:
> On Thu, Sep 10, 2015 at 6:47 AM, Felipe Tonello <[email protected]>
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html