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

Reply via email to