Hi Sudeep, On Wednesday 04 March 2015 15:56:12 Sudeep Holla wrote: > On 26/02/15 18:53, Laurent Pinchart wrote: > > Hi Sudeep, > > > > Thank you for the patch. > > > > On Thursday 26 February 2015 11:47:57 Sudeep Holla wrote: > >> As per the SAF1761 data sheet[0], the DcChipID register represents > >> the hardware version number (0001h) and the chip ID (1582h) for the > >> Peripheral Controller. > >> > >> However as per the ISP1761 data sheet[1], the DcChipID register > >> represents the hardware version number (0015h) and the chip ID (8210h) > >> for the Peripheral Controller. > >> > >> This patch adds support for both the chip ID values. > >> > >> [0] http://www.nxp.com/documents/data_sheet/SAF1761.pdf > >> [1] http://pdf.datasheetcatalog.com/datasheets2/74/742102_1.pdf > >> > >> Cc: Felipe Balbi <balbi@xxxxxx> > >> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > >> Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx> > > > > Acked-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > > Thanks. I assume Felipe will pick this up. > > Now about the testing in Gadget mode on Vexpress platform. > I have set > CONFIG_USB_OTG=y > CONFIG_USB_MON=y > CONFIG_USB_STORAGE=y > CONFIG_USB_ISP1760=y > CONFIG_USB_ISP1760_DUAL_ROLE=y > CONFIG_USB_GADGET=y > CONFIG_USB_MASS_STORAGE=m > > When I execute: > $ modprobe g_mass_storage file=/home/linaro/backing_file > > I get the following inconsistent lock state dump > > --->8 > Number of LUNs=8 > Mass Storage Function, version: 2009/09/11 > LUN: removable file: (no medium) > Number of LUNs=1 > LUN: file: /home/linaro/backing_file > Number of LUNs=1 > g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11 > g_mass_storage gadget: userspace failed to provide iSerialNumber > g_mass_storage gadget: g_mass_storage ready > > ================================= > [ INFO: inconsistent lock state ] > 4.0.0-rc2-00004-gf7bb2ef60173 #51 Not tainted > --------------------------------- > inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. > in:imklog/2118 [HC1[1]:SC0[0]:HE0:SE1] takes: > (&(&udc->lock)->rlock){?.+...}, at: [<c0397a93>] > isp1760_udc_irq+0x367/0x9dc > {HARDIRQ-ON-W} state was registered at: > [<c05135b3>] _raw_spin_lock+0x23/0x30 > [<c0396b87>] isp1760_udc_start+0x23/0xf8 > [<c039dc21>] udc_bind_to_driver+0x71/0xb0 > [<c039de4f>] usb_gadget_probe_driver+0x53/0x9c > [<bf80d0df>] usb_composite_probe+0x8a/0xa4 [libcomposite] > [<bf8311a7>] 0xbf8311a7 > [<c00088c5>] do_one_initcall+0x8d/0x17c > [<c050b92d>] do_init_module+0x49/0x148 > [<c0087323>] load_module+0xb7f/0xbc4 > [<c0087471>] SyS_finit_module+0x51/0x74 > [<c000d8c1>] ret_fast_syscall+0x1/0x68 > irq event stamp: 4966 > hardirqs last enabled at (4965): [<c05137df>] > _raw_spin_unlock_irq+0x1f/0x24 > hardirqs last disabled at (4966): [<c00110b3>] __irq_svc+0x33/0x64 > softirqs last enabled at (4458): [<c0023475>] __do_softirq+0x23d/0x2d0 > softirqs last disabled at (4389): [<c002380b>] irq_exit+0xef/0x15c > > other info that might help us debug this: > Possible unsafe locking scenario: > > CPU0 > ---- > lock(&(&udc->lock)->rlock); > <Interrupt> > lock(&(&udc->lock)->rlock); > > *** DEADLOCK *** > > 1 lock held by in:imklog/2118: > #0: (&f->f_pos_lock){+.+.+.}, at: [<c010a101>] __fdget_pos+0x31/0x34 > > stack backtrace: > CPU: 0 PID: 2118 Comm: in:imklog Not tainted > 4.0.0-rc2-00004-gf7bb2ef60173 #51 > Hardware name: ARM-Versatile Express > [<c0013bc5>] (unwind_backtrace) from [<c001084d>] (show_stack+0x11/0x14) > [<c001084d>] (show_stack) from [<c050ea85>] (dump_stack+0x6d/0x78) > [<c050ea85>] (dump_stack) from [<c0054abd>] (print_usage_bug+0x1d9/0x260) > [<c0054abd>] (print_usage_bug) from [<c0054cb7>] (mark_lock+0x173/0x5d0) > [<c0054cb7>] (mark_lock) from [<c005600f>] (__lock_acquire+0xab7/0x19a4) > [<c005600f>] (__lock_acquire) from [<c0057575>] (lock_acquire+0x79/0xe8) > [<c0057575>] (lock_acquire) from [<c05135b3>] (_raw_spin_lock+0x23/0x30) > [<c05135b3>] (_raw_spin_lock) from [<c0397a93>] > (isp1760_udc_irq+0x367/0x9dc) > [<c0397a93>] (isp1760_udc_irq) from [<c0065449>] > (handle_irq_event_percpu+0x45/0x154) > [<c0065449>] (handle_irq_event_percpu) from [<c0065587>] > (handle_irq_event+0x2f/0x44) > [<c0065587>] (handle_irq_event) from [<c006735b>] > (handle_fasteoi_irq+0x6f/0xf0) > [<c006735b>] (handle_fasteoi_irq) from [<c0064d2f>] > (generic_handle_irq+0x23/0x2c) > [<c0064d2f>] (generic_handle_irq) from [<c0064f75>] > (__handle_domain_irq+0x45/0x84) > [<c0064f75>] (__handle_domain_irq) from [<c000856b>] > (gic_handle_irq+0x27/0x50) > [<c000856b>] (gic_handle_irq) from [<c00110bf>] (__irq_svc+0x3f/0x64) > Exception stack(0xecc27e08 to 0xecc27e50) > 7e00: 00000001 ecd6cdd8 00000000 ecd6c7c0 ee78ff00 > c003b44a > 7e20: c103a78c ecc27e68 c080d8b8 00000001 00000000 ecd6c7c0 c0992738 > ecc27e50 > 7e40: c0055161 c05137e0 400c0033 ffffffff > [<c00110bf>] (__irq_svc) from [<c05137e0>] (_raw_spin_unlock_irq+0x20/0x24) > [<c05137e0>] (_raw_spin_unlock_irq) from [<c003b48d>] > (finish_task_switch+0x99/0x16c) > [<c003b48d>] (finish_task_switch) from [<c050f90d>] (__schedule+0x2fd/0x6f0) > [<c050f90d>] (__schedule) from [<c050fd2f>] (schedule+0x2f/0x64) > [<c050fd2f>] (schedule) from [<c00639a1>] (do_syslog+0x40d/0x470) > [<c00639a1>] (do_syslog) from [<c0139cd9>] (proc_reg_read+0x49/0x6c) > [<c0139cd9>] (proc_reg_read) from [<c00f44bd>] (vfs_read+0x55/0xb8) > [<c00f44bd>] (vfs_read) from [<c00f4555>] (SyS_read+0x35/0x74) > [<c00f4555>] (SyS_read) from [<c000d8c1>] (ret_fast_syscall+0x1/0x68) > > --- > > Also I don't see any message on the host side. Let me know if there's > something wrong in my config or test commands. Looks like a driver bug to me, .udc_start() and .udc_stop() should use spin_(un)lock_irq(). Would you like to submit a patch ? I can also do it. -- Regards, Laurent Pinchart -- 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