Re: MIDI gadget allocating too much from coherent pool

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

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux