[alsa-devel] g_audio kernel oops on pulling calbe
Angelo Compagnucci
angelo.compagnucci at gmail.com
Tue Jul 7 09:12:39 CEST 2015
Hi Michael
2015-07-06 19:20 GMT+02:00 Michael Trimarchi <michael at amarulasolutions.com>:
> Hi
>
> On Jul 6, 2015 4:10 PM, "Angelo Compagnucci" <angelo.compagnucci at gmail.com>
> wrote:
>>
>> Hi Michael,
>>
>> 2015-07-06 15:38 GMT+02:00 Michael Trimarchi
>> <michael at amarulasolutions.com>:
>> > Hi
>> >
>> > On Mon, Jul 6, 2015 at 3:20 PM, Angelo Compagnucci
>> > <angelo.compagnucci at gmail.com> wrote:
>> >> Dear Developers,
>> >>
>> >> I'm having hard times with g_audio module on a Atmel SAMA5D3. I always
>> >> obtain a kernel oops in a memcpy inside f_audio_complete function.
>> >> Honeslty I cannot understand wht's going wrong, cause that memcpy
>> >> should work.
>> >>
>> >> I have a simple ssc sound card whih works as expected when used with
>> >> aplay or any other audio player software, but when i pull the usb
>> >> cable this is what I obtain:
>> >>
>> >
>> > Please check if req->length is 4 byte too ;).
>>
>> Unfortunately it's not 4 bytes long ... Sometimes is 2 sometimes is
>> one, I added a dirty printk before the memcpy:
>
> Code is wrong, if the dst is 4 byte, you can't copy more then this, so some
> check should be done.
Honestly, the buffer len never exceeded 2 bytes in my tests, at least
stating to the printk I added.
[ 11.750000] len=2 buf=0x560018
[ 11.750000] data=0x18
[ 11.750000] len=2 buf=0x56000C
[ 11.750000] data=0x0C
[ 11.760000] len=2 buf=0x560006
[ 11.760000] data=0x06
[ 11.760000] len=2 buf=0x560003
[ 11.760000] data=0x03
[ 11.770000] len=2 buf=0x560001
[ 11.770000] data=0x01
[ 11.770000] len=2 buf=0x56FFC1
[ 11.770000] data=0xFFC1
[ 11.780000] len=2 buf=0x56FFC0
[ 11.780000] data=0xFFC0
[ 12.420000] len=1 buf=0x410300
[ 12.420000] data=0x00
[ 12.440000] len=2 buf=0x41FFC0
[ 12.440000] data=0xFFC0
[ 12.450000] len=2 buf=0x41FFC0
[ 12.450000] data=0xFFC0
[ 12.650000] Unable to handle kernel paging request at virtual
address 0a080604
[ 12.650000] pgd = c0004000
[ 12.650000] [0a080604] *pgd=00000000
[ 12.650000] Internal error: Oops: 805 [#1] ARM
I think there is more of a problem with an invalid pointer. Indeed a
quick fix like this works:
if (req->buf) memcpy(&data, req->buf, req->length);
Unfortunately, it's fails miserably somewhere else with this error and
the audio from USB is jerky:
[ 11.680000] len=2 buf=0x560018
[ 11.680000] data=0x18
[ 11.680000] len=2 buf=0x56000C
[ 11.680000] data=0x0C
[ 11.690000] len=2 buf=0x560006
[ 11.690000] data=0x06
[ 11.690000] len=2 buf=0x560003
[ 11.690000] data=0x03
[ 11.700000] len=2 buf=0x560001
[ 11.700000] data=0x01
[ 11.700000] len=2 buf=0x56FFC1
[ 11.700000] data=0xFFC1
[ 11.710000] len=2 buf=0x56FFC0
[ 11.710000] data=0xFFC0
[ 12.340000] g_audio gadget: Playback error: -14
[ 12.340000] g_audio gadget: Playback error: -14
[ 12.350000] g_audio gadget: Playback error: -14
[ 12.350000] g_audio gadget: Playback error: -14
[ 12.350000] g_audio gadget: Playback error: -14
[ 12.360000] len=1 buf=0x410300
[ 12.360000] data=0x00
[ 12.360000] g_audio gadget: Playback error: -14
[ 12.370000] g_audio gadget: Playback error: -14
[ 12.370000] g_audio gadget: Playback error: -14
[ 12.380000] len=2 buf=0x41FFC0
[ 12.380000] data=0xFFC0
[ 12.380000] g_audio gadget: Playback error: -14
[ 12.390000] g_audio gadget: Playback error: -14
[ 12.390000] g_audio gadget: Playback error: -14
[ 12.400000] g_audio gadget: Playback error: -14
[ 12.400000] g_audio gadget: Playback error: -14
[ 12.410000] len=2 buf=0x41FFC0
[ 12.410000] data=0xFFC0
[ 12.410000] g_audio gadget: Playback error: -14
The error is obviously at that "data=0x00" probably cause the address
of buffer is invalid. Honestly I don't know where to look further to
understand the root cause of the problem. I initially thought that
having a working alsa driver should be a sufficient condition to have
a working usb bridge!
Sincerely, Angelo
>
> Michael
>
>>
>> [ 23.320000] len=2 buf=
>
>
>> [ 23.320000] len=2 buf=
>>
>> [ 23.320000] len=2 buf=
>> [ 23.330000] len=2 buf=
>> [ 23.330000] len=2 buf=
>> [ 23.330000] len=2 buf=��V
>> [ 23.330000] len=2 buf=��V
>> [ 23.970000] len=1 buf=
>> [ 23.990000] len=2 buf=��A
>> [ 24.000000] len=2 buf=��A
>> [ 24.190000] Unable to handle kernel paging request at virtual
>> address 0a080604
>>
>> Any idea on what is causing this wired behaviour?
>>
>> Sincerely, Angelo
>>
>>
>> > Michael
>> >
>> >> [ 23.860000] Unable to handle kernel paging request at virtual
>> >> address 0a080604
>> >> [ 23.860000] pgd = c0004000
>> >> [ 23.860000] [0a080604] *pgd=00000000
>> >> [ 23.860000] Internal error: Oops: 805 [#1] ARM
>> >> [ 23.860000] Modules linked in: usb_f_uac1 g_audio libcomposite
>> >> snd_soc_atmel_ssc_dai snd_soc_atmel_pcm_dma
>> >> [ 23.860000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.19.8+ #81
>> >> [ 23.860000] Hardware name: Atmel SAMA5 (Device Tree)
>> >> [ 23.860000] task: c05327b8 ti: c0528000 task.ti: c0528000
>> >> [ 23.860000] PC is at memcpy+0x50/0x330
>> >> [ 23.860000] LR is at 0x0
>> >> [ 23.860000] pc : [<c01a0430>] lr : [<00000000>] psr: 20090193
>> >> [ 23.860000] sp : c0529e5c ip : 00000000 fp : cfb33200
>> >> [ 23.860000] r10: 00000001 r9 : 0000bb80 r8 : 00000000
>> >> [ 23.860000] r7 : 00000000 r6 : 00000000 r5 : 00000000 r4 :
>> >> 00000000
>> >> [ 23.860000] r3 : 00000000 r2 : 00000020 r1 : cf9f5220 r0 :
>> >> 0a080604
>> >> [ 23.860000] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM
>> >> Segment kernel
>> >> [ 23.860000] Control: 10c53c7d Table: 2fb24059 DAC: 00000015
>> >> [ 23.860000] Process swapper (pid: 0, stack limit = 0xc0528230)
>> >> [ 23.860000] Stack: (0xc0529e5c to 0xc052a000)
>> >> [ 23.860000] 9e40:
>> >> cf9f5100
>> >> [ 23.860000] 9e60: cfa25868 cf9e7dc0 cfb33080 0a080604 cfb33200
>> >> bf0287e0 cfa25858 00000000
>> >> [ 23.860000] 9e80: cfa20a10 cfb33200 cfa25858 cfa20a10 cfa20a10
>> >> 000000c0 00000002 c0284f50
>> >> [ 23.860000] 9ea0: c0529ea0 c0529ea0 00000002 00000090 cfa25858
>> >> c0286408 0000001c ffffffff
>> >> [ 23.860000] 9ec0: 7fffffff c054e040 00000000 02000029 cf88cac0
>> >> c05544fe c0529ed8 c0529ed8
>> >> [ 23.860000] 9ee0: 00000000 cfa23c40 cf802540 00000000 00000000
>> >> 0000002d cf901dc0 c05544fe
>> >> [ 23.860000] 9f00: 00000000 c0040b28 c05544fe c0554dc0 cf901dc0
>> >> cf802540 00000000 00000000
>> >> [ 23.860000] 9f20: cf802200 c051fe18 cfffc480 c0040c18 cf901dc0
>> >> c0042e38 0000002d 0000002d
>> >> [ 23.860000] 9f40: 00000000 c004034c c053aca0 c0040570 c000eec4
>> >> 60090013 ffffffff c0529f9c
>> >> [ 23.860000] 9f60: c0554600 c0011b00 00000000 c0536918 00000000
>> >> c0017880 c0528000 c05300c4
>> >> [ 23.860000] 9f80: c05544fc c05544fc c0554600 c051fe18 cfffc480
>> >> 00000000 01000000 c0529fb0
>> >> [ 23.860000] 9fa0: c000eec0 c000eec4 60090013 ffffffff c0528000
>> >> c0039b90 ffffffff c04fac30
>> >> [ 23.860000] 9fc0: ffffffff ffffffff c04fa678 00000000 00000000
>> >> c051fe18 c05547d4 c0530070
>> >> [ 23.860000] 9fe0: c051fe14 c0533860 20004059 410fc051 00000000
>> >> 20008070 00000000 00000000
>> >> [ 23.860000] [<c01a0430>] (memcpy) from [<bf0287e0>]
>> >> (f_audio_complete+0x11c/0x170 [usb_f_uac1])
>> >> [ 23.860000] [<bf0287e0>] (f_audio_complete [usb_f_uac1]) from
>> >> [<c0284f50>] (request_complete+0x5c/0x80)
>> >> [ 23.860000] [<c0284f50>] (request_complete) from [<c0286408>]
>> >> (usba_udc_irq+0x12c/0xc50)
>> >> [ 23.860000] [<c0286408>] (usba_udc_irq) from [<c0040b28>]
>> >> (handle_irq_event_percpu+0x78/0x140)
>> >> [ 23.860000] [<c0040b28>] (handle_irq_event_percpu) from
>> >> [<c0040c18>] (handle_irq_event+0x28/0x38)
>> >> [ 23.860000] [<c0040c18>] (handle_irq_event) from [<c0042e38>]
>> >> (handle_fasteoi_irq+0x9c/0x164)
>> >> [ 23.860000] [<c0042e38>] (handle_fasteoi_irq) from [<c004034c>]
>> >> (generic_handle_irq+0x2c/0x3c)
>> >> [ 23.860000] [<c004034c>] (generic_handle_irq) from [<c0040570>]
>> >> (__handle_domain_irq+0x54/0xa8)
>> >> [ 23.860000] [<c0040570>] (__handle_domain_irq) from [<c0011b00>]
>> >> (__irq_svc+0x40/0x54)
>> >> [ 23.860000] [<c0011b00>] (__irq_svc) from [<c000eec4>]
>> >> (arch_cpu_idle+0x38/0x3c)
>> >> [ 23.860000] [<c000eec4>] (arch_cpu_idle) from [<c0039b90>]
>> >> (cpu_startup_entry+0xa8/0xf4)
>> >> [ 23.860000] [<c0039b90>] (cpu_startup_entry) from [<c04fac30>]
>> >> (start_kernel+0x374/0x380)
>> >> [ 23.860000] Code: f5d1f05c f5d1f07c e8b151f8 e2522020 (e8a051f8)
>> >> [ 23.860000] ---[ end trace 6affc0dac289a4ab ]---
>> >> [ 23.860000] Kernel panic - not syncing: Fatal exception in interrupt
>> >> [ 23.860000] ---[ end Kernel panic - not syncing: Fatal exception in
>> >> interrupt
>> >>
>> >> Anyone has a clue about that?
>> >>
>> >> --
>> >> Profile: http://it.linkedin.com/in/compagnucciangelo
>> >> _______________________________________________
>> >> Alsa-devel mailing list
>> >> Alsa-devel at alsa-project.org
>> >> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>> >
>> >
>> >
>> > --
>> > | Michael Nazzareno Trimarchi Amarula Solutions BV |
>> > | COO - Founder Cruquiuskade 47 |
>> > | +31(0)851119172 Amsterdam 1018 AM NL |
>> > | [`as] http://www.amarulasolutions.com |
>>
>>
>>
>> --
>> Profile: http://it.linkedin.com/in/compagnucciangelo
--
Profile: http://it.linkedin.com/in/compagnucciangelo
More information about the Alsa-devel
mailing list