On Friday 14 April 2006 1:39 am, Vishal Borker wrote: > Hi All, > I have been implementing a MTP/PTP class that runs over gadgetfs > interface and my usb gadget driver for the TI DM320 processor. So far > all is well. I am able to detect the board as a MTP device, I am able to > list the files, delete files using MTP etc. However, when i try to sync > a playlist with my board, i see that i get a slab corruption kernel > crash(See below). Any ideas on what i may be doing wrong?
Check all the IRQ and locking invariants in your driver ... - make sure the spin_lock_irqsave() entries are always matched with spin_unlock_irqrestore(), even on fault paths; - data modified in your irq handler must always be protected against irqs even in other code paths; - the data which the locks protect is always locked before the driver reads or modifies it; ... and so on; those are the normal locking rules. "sparse" will tell you about some rule violations; you might want to add locking annotations. Also when you give back a usb_request, be sure that IRQs are blocked, the spinlock is released (since the callback may reenter your driver), and that reentrant request submission does NOT modify hardware for the endpoint you are still servicing. You probably have some work yet to do after issuing the request completion, and such re-entrant calls must not goof the state you were relying on. That issue is easy to overlook if you've not written this type of driver before. I see multiple IRQ entries on your stack, which might be false backtrace information but might also indicate you did something like wrongly enabling IRQs too early. - Dave > warm regards, > Vishal > > > ************************************************************************** > > Unable to handle kernel paging request at virtual address 6c756f42 > pgd = c0cc8000 > [6c756f42] *pgd=00000000 > Internal error: Oops: 0 [#1] > Modules linked in: gadgetfs dm320_function > CPU: 0 > PC is at 0x6c756f42 > LR is at __wake_up_common+0x50/0x7c > pc : [<6c756f42>] lr : [<c0030984>] Not tainted > sp : c0017bac ip : c02c7a74 fp : c0017bd4 > r10: 00000003 r9 : 00000000 r8 : 00000000 > r7 : 00000000 r6 : c0017efc r5 : 00000000 r4 : 00000001 > r3 : 00000000 r2 : 00000000 r1 : 00000003 r0 : c02c7a74 > Flags: nzCv IRQs off FIQs on Mode SVC_32 (T) Segment user > Control: 5317F Table: 015C8000 DAC: 00000015 > Process mtpd (pid: 662, stack limit = 0xc0016194) > Stack: (0xc0017bac to 0xc0018000) > 7ba0: c0017efc 60000093 00000000 c0710478 > 00000f00 > 7bc0: c0016000 00000200 c0017bf0 c0017bd8 c0030b20 c0030944 00000000 > c0c09a3c > 7be0: c0710608 c0017c00 c0017bf4 bf00515c c0030ae0 c0017c1c c0017c04 > bf000400 > 7c00: bf005138 c0c09a3c c0710608 c0b20000 c0017c38 c0017c20 bf00058c > bf000390 > 7c20: c0c09a3c c0c09a64 c071062c c0017c68 c0017c3c bf0012f8 bf00051c > c0017ce0 > 7c40: c0212590 c0d7a278 00000000 00000000 0000000f c0017ce0 c020c0b8 > c0017c8c > 7c60: c0017c6c c001f02c bf000e14 c020c3c4 0000000f c0d7a278 c0017ce0 > c0017ce0 > 7c80: c0017cac c0017c90 c001f1a4 c001efd4 0000000f c020c3c4 00000000 > 00010105 > 7ca0: c0017cdc c0017cb0 c001f338 c001f0fc 00000000 00000000 ffffffff > c0017d14 > 7cc0: 00000000 00010105 00010104 c020c0b8 c0017d48 c0017ce0 c001def8 > c001f2f4 > 7ce0: 00000001 c0016000 00000005 40000013 c0d4dda4 0000000c 00000000 > 0000000c > 7d00: c0017d9c c0016000 c020c0b8 c0017d48 c0017d28 c0017d28 c001effc > c001f014 > 7d20: 40000013 ffffffff c020c328 0000000c c0d4dda4 c0017d9c c0017d9c > c0017d68 > 7d40: c0017d4c c001f1a4 c001efd4 0000000c c020c328 0000000a 00000104 > c0017d98 > 7d60: c0017d6c c001f338 c001f0fc c020c0b8 c0017d98 ffffffff c0017dd0 > 0000000a > 7d80: 00000104 00000103 c020c0b8 c0017e00 c0017d9c c001def8 c001f2f4 > 00000000 > 7da0: 00000103 c0016000 20000013 00000002 c020c0b8 0000000a c0212340 > c0017e44 > 7dc0: c0016000 c020c0b8 c0017e00 c0017de4 c0017de4 c00398d8 c00398f0 > 20000013 > 7de0: ffffffff 00000000 c020c0b8 00000000 00000002 c0017e10 c0017e04 > c0039aa8 > 7e00: c00398bc c0017e40 c0017e14 c001f424 c0039a74 c002f804 60000093 > ffffffff > 7e20: c0017e78 00000000 00000002 00000001 8d9162e4 c0017eac c0017e44 > c001def8 > 7e40: c001f2f4 00000000 c0016000 00000002 00000002 00000000 c02c7a80 > 00000000 > 7e60: 20000013 c0017eb0 c0017fb0 8d9162e4 c0017eac c0017e18 c0017e8c > c00300bc > 7e80: c003ff24 40000013 ffffffff ffffffec c02c7a80 c0d8088c c0019c28 > c0019c58 > 7ea0: c0017f3c c0017eb0 c0025180 c003fea4 0000000b 00000000 00030001 > 8d9162e4 > 7ec0: c002f804 0000000b 0000000b c02c7a80 0000000b c0017f04 c0017ee4 > c005c260 > 7ee0: 0000000b 00000000 00030001 8d9162e4 c002f804 0000000b 0000000c > c02c7a80 > 7f00: c005d258 c005c060 00001000 c0d613d8 be7fd9e8 c0017f3c c0017f3c > c0017f28 > 7f20: c00fdfb8 c002f804 ffffffec c02c7a80 c0017f74 c0017f40 c00253d8 > c0025140 > 7f40: 00030001 c0017fb0 00000000 8d9162e4 be7ffbe0 00000000 00000000 > c0017fb0 > 7f60: 0002dd00 40037b64 c0017f9c c0017f78 c0025438 c0025204 c0021be8 > ffffffff > 7f80: be7ffbe0 00000000 00000000 40039e84 c0017fac c0017fa0 c00255cc > c0025418 > 7fa0: 00000000 c0017fb0 c001e288 c00255c4 00001000 be7fd9e8 00001000 > 00000000 > 7fc0: be7fea6c be7ffbe0 00000000 00000000 40039e84 0002dd00 40037b64 > be7fea20 > 7fe0: 00000000 be7fd9e0 4002d9c0 8d9162e4 00000010 ffffffff e24cb004 > e24dd014 > Backtrace: > [<c0030934>] (__wake_up_common+0x0/0x7c) from [<c0030b20>] > (complete+0x50/0x78) > [<c0030ad0>] (complete+0x0/0x78) from [<bf00515c>] (epio_complete+0x34/0x38 > [gadgetfs]) > r5 = C0710608 r4 = C0C09A3C > [<bf005128>] (epio_complete+0x0/0x38 [gadgetfs]) from [<bf000400>] > (done+0x80/0xb8 [dm320_function]) > [<bf000380>] (done+0x0/0xb8 [dm320_function]) from [<bf00058c>] > (read_fifo+0x80/0x90 [dm320_function]) > r6 = C0B20000 r5 = C0710608 r4 = C0C09A3C > [<bf00050c>] (read_fifo+0x0/0x90 [dm320_function]) from [<bf0012f8>] > (handle_core_irqs+0x4f4/0x600 [dm320_functio > n]) > r6 = C071062C r5 = C0C09A64 r4 = C0C09A3C > [<bf000e04>] (handle_core_irqs+0x0/0x600 [dm320_function]) from [<c001f02c>] > (__do_irq+0x68/0xac) > [<c001efc4>] (__do_irq+0x0/0xac) from [<c001f1a4>] (do_edge_IRQ+0xb8/0x134) > r8 = C0017CE0 r7 = C0017CE0 r6 = C0D7A278 r5 = 0000000F > r4 = C020C3C4 > [<c001f0ec>] (do_edge_IRQ+0x0/0x134) from [<c001f338>] > (asm_do_IRQ+0x54/0x15c) > r7 = 00010105 r6 = 00000000 r5 = C020C3C4 r4 = 0000000F > [<c001f2e4>] (asm_do_IRQ+0x0/0x15c) from [<c001def8>] (__irq_svc+0x38/0x60) > [<c001efc4>] (__do_irq+0x0/0xac) from [<c001f1a4>] (do_edge_IRQ+0xb8/0x134) > r8 = C0017D9C r7 = C0017D9C r6 = C0D4DDA4 r5 = 0000000C > r4 = C020C328 > [<c001f0ec>] (do_edge_IRQ+0x0/0x134) from [<c001f338>] > (asm_do_IRQ+0x54/0x15c) > r7 = 00000104 r6 = 0000000A r5 = C020C328 r4 = 0000000C > [<c001f2e4>] (asm_do_IRQ+0x0/0x15c) from [<c001def8>] (__irq_svc+0x38/0x60) > [<c00398ac>] (__do_softirq+0x0/0xd0) from [<c0039aa8>] (irq_exit+0x44/0x58) > r7 = 00000002 r6 = 00000000 r5 = C020C0B8 r4 = 00000000 > [<c0039a64>] (irq_exit+0x0/0x58) from [<c001f424>] (asm_do_IRQ+0x140/0x15c) > [<c001f2e4>] (asm_do_IRQ+0x0/0x15c) from [<c001def8>] (__irq_svc+0x38/0x60) > [<c003fe94>] (force_sig_info+0x0/0xb4) from [<c0025180>] > (__do_user_fault+0x50/0x58) > r8 = C0019C58 r7 = C0019C28 r6 = C0D8088C r5 = C02C7A80 > r4 = FFFFFFEC > [<c0025130>] (__do_user_fault+0x0/0x58) from [<c00253d8>] > (do_page_fault+0x1e4/0x214) > [<c00251f4>] (do_page_fault+0x0/0x214) from [<c0025438>] > (do_translation_fault+0x30/0xb4) > [<c0025408>] (do_translation_fault+0x0/0xb4) from [<c00255cc>] > (do_PrefetchAbort+0x18/0x1c) > r8 = 40039E84 r7 = 00000000 r6 = 00000000 r5 = BE7FFBE0 > r4 = FFFFFFFF > [<c00255b4>] (do_PrefetchAbort+0x0/0x1c) from [<c001e288>] > (ret_from_exception+0x0/0x10) > Code: bad PC value. > <0>Kernel panic - not syncing: Aiee, killing interrupt handler! > > > > > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > linux-usb-devel@lists.sourceforge.net > To unsubscribe, use the last form field at: > https://lists.sourceforge.net/lists/listinfo/linux-usb-devel > ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel