Re: [PATCH v2] usb: dwc3: core: Fix gadget for system suspend/resume

2014-04-22 Thread Roger Quadros
Hi Felipe,

Looks like we missed this one. Could you please pick this up for -rc?
Thanks.

cheers,
-roger

On 03/26/2014 11:43 AM, Roger Quadros wrote:
 During system resume, if the event buffers are not setup before
 the gadget controller starts then we start with invalid context
 and this can lead to bus access errors. This is especially true for
 platforms that loose the controller context during system suspend.
 e.g. AM437x.
 
 The following backtrace was found when the system is suspended
 and resumed with g_zero loaded on AM437x-evm (USB cable connected
 to host all the while).
 
 [  120.981506] WARNING: CPU: 0 PID: 1656 at drivers/bus/omap_l3_noc.c:137 
 l3_interrupt_handler+0x198/0x28c()
 [  120.981514] L3 custom error: MASTER:USB0 WR TARGET:GPMC
 [  120.981638] Modules linked in: g_mass_storage usb_f_mass_storage 
 libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) dwc3 
 snd_soc_evm snd_soc_omap snd_pe
 [  120.981659] CPU: 0 PID: 1656 Comm: sh Tainted: G   O 
 3.12.10-gc559824 #1
 [  120.981669] Backtrace:
 [  120.981705] [c0017880] (dump_backtrace+0x0/0x10c) from [c0017a1c] 
 (show_stack+0x18/0x1c)
 [  120.981730]  r6:c02819ac r5:0009 r4:ec137cb8 r3:
 [  120.981767] [c0017a04] (show_stack+0x0/0x1c) from [c056c0b0] 
 (dump_stack+0x20/0x28)
 [  120.981802] [c056c090] (dump_stack+0x0/0x28) from [c0046d08] 
 (warn_slowpath_common+0x70/0x90)
 [  120.981830] [c0046c98] (warn_slowpath_common+0x0/0x90) from [c0046dcc] 
 (warn_slowpath_fmt+0x38/0x40)
 [  120.981856]  r8:c0855eb0 r7:0002 r6:f1000700 r5:0007 r4:80080003
 [  120.981886] [c0046d94] (warn_slowpath_fmt+0x0/0x40) from [c02819ac] 
 (l3_interrupt_handler+0x198/0x28c)
 [  120.981900]  r3:c0801ab8 r2:c06cb354
 [  120.981936] [c0281814] (l3_interrupt_handler+0x0/0x28c) from 
 [c007162c] (handle_irq_event_percpu+0x54/0x1b8)
 [  120.981962] [c00715d8] (handle_irq_event_percpu+0x0/0x1b8) from 
 [c00717c0] (handle_irq_event+0x30/0x40)
 [  120.981993] [c0071790] (handle_irq_event+0x0/0x40) from [c0074058] 
 (handle_fasteoi_irq+0x74/0x128)
 [  120.982006]  r4:ed0056c0 r3:
 [  120.982033] [c0073fe4] (handle_fasteoi_irq+0x0/0x128) from [c0070f34] 
 (generic_handle_irq+0x28/0x38)
 [  120.982046]  r4:002a r3:c0073fe4
 [  120.982085] [c0070f0c] (generic_handle_irq+0x0/0x38) from [c0015560] 
 (handle_IRQ+0x38/0x8c)
 [  120.982098]  r4:c080137c r3:0182
 [  120.982124] [c0015528] (handle_IRQ+0x0/0x8c) from [c00087e0] 
 (gic_handle_irq+0x30/0x5c)
 [  120.982145]  r6:ec137dd0 r5:c07ac480 r4:fa24010c r3:0100
 [  120.982169] [c00087b0] (gic_handle_irq+0x0/0x5c) from [c056fcc0] 
 (__irq_svc+0x40/0x54)
 [  120.982179] Exception stack(0xec137dd0 to 0xec137e18)
 [  120.982195] 7dc0:  a1d3 
  0004
 [  120.982216] 7de0: a153 ec1d9010 c080de90 ec137e30 c080debc  
 ed756e44 ec137e2c
 [  120.982232] 7e00: ec137de0 ec137e18 bf1150e4 bf115474 6153 
 [  120.982253]  r7:ec137e04 r6: r5:6153 r4:bf115474
 [  120.982327] [bf115438] (dwc3_complete+0x0/0x40 [dwc3]) from [c0338f50] 
 (dpm_complete+0xd4/0x19c)
 [  120.982341]  r5:ed756e10 r4:ed756e64
 [  120.982370] [c0338e7c] (dpm_complete+0x0/0x19c) from [c0339034] 
 (dpm_resume_end+0x1c/0x20)
 [  120.982400] [c0339018] (dpm_resume_end+0x0/0x20) from [c006d4ec] 
 (suspend_devices_and_enter+0x118/0x33c)
 [  120.982412]  r4:c0833da4 r3:
 [  120.982436] [c006d3d4] (suspend_devices_and_enter+0x0/0x33c) from 
 [c006d928] (pm_suspend+0x218/0x254)
 [  120.982458] [c006d710] (pm_suspend+0x0/0x254) from [c006c594] 
 (state_store+0x70/0xc0)
 [  120.982478]  r6:c057a6cc r5:c06a8320 r4:0003 r3:006d
 [  120.982515] [c006c524] (state_store+0x0/0xc0) from [c0264cc0] 
 (kobj_attr_store+0x1c/0x28)
 [  120.982546] [c0264ca4] (kobj_attr_store+0x0/0x28) from [c012ccb8] 
 (sysfs_write_file+0x170/0x1a4)
 [  120.982583] [c012cb48] (sysfs_write_file+0x0/0x1a4) from [c00d17e4] 
 (vfs_write+0xb8/0x190)
 [  120.982611] [c00d172c] (vfs_write+0x0/0x190) from [c00d1bf8] 
 (SyS_write+0x44/0x78)
 [  120.982641] [c00d1bb4] (SyS_write+0x0/0x78) from [c0014660] 
 (ret_fast_syscall+0x0/0x30)
 
 Signed-off-by: Roger Quadros rog...@ti.com
 Acked-by: Felipe Balbi ba...@ti.com
 ---
  drivers/usb/dwc3/core.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
 index d001417..10e 100644
 --- a/drivers/usb/dwc3/core.c
 +++ b/drivers/usb/dwc3/core.c
 @@ -821,6 +821,7 @@ static void dwc3_complete(struct device *dev)
  
   spin_lock_irqsave(dwc-lock, flags);
  
 + dwc3_event_buffers_setup(dwc);
   switch (dwc-dr_mode) {
   case USB_DR_MODE_PERIPHERAL:
   case USB_DR_MODE_OTG:
 @@ -828,7 +829,6 @@ static void dwc3_complete(struct device *dev)
   /* FALLTHROUGH */
   case USB_DR_MODE_HOST:
   default:
 - dwc3_event_buffers_setup(dwc);
   break;
   }
  
 

--
To unsubscribe 

Re: [PATCH v2] usb: dwc3: core: Fix gadget for system suspend/resume

2014-04-22 Thread Felipe Balbi
Hi,

On Tue, Apr 22, 2014 at 03:24:44PM +0300, Roger Quadros wrote:
 Looks like we missed this one. Could you please pick this up for -rc?

see http://marc.info/?l=linux-usbm=139809466025568w=2 , it's already
there

-- 
balbi


signature.asc
Description: Digital signature


[PATCH v2] usb: dwc3: core: Fix gadget for system suspend/resume

2014-03-26 Thread Roger Quadros
During system resume, if the event buffers are not setup before
the gadget controller starts then we start with invalid context
and this can lead to bus access errors. This is especially true for
platforms that loose the controller context during system suspend.
e.g. AM437x.

The following backtrace was found when the system is suspended
and resumed with g_zero loaded on AM437x-evm (USB cable connected
to host all the while).

[  120.981506] WARNING: CPU: 0 PID: 1656 at drivers/bus/omap_l3_noc.c:137 
l3_interrupt_handler+0x198/0x28c()
[  120.981514] L3 custom error: MASTER:USB0 WR TARGET:GPMC
[  120.981638] Modules linked in: g_mass_storage usb_f_mass_storage 
libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) dwc3 
snd_soc_evm snd_soc_omap snd_pe
[  120.981659] CPU: 0 PID: 1656 Comm: sh Tainted: G   O 
3.12.10-gc559824 #1
[  120.981669] Backtrace:
[  120.981705] [c0017880] (dump_backtrace+0x0/0x10c) from [c0017a1c] 
(show_stack+0x18/0x1c)
[  120.981730]  r6:c02819ac r5:0009 r4:ec137cb8 r3:
[  120.981767] [c0017a04] (show_stack+0x0/0x1c) from [c056c0b0] 
(dump_stack+0x20/0x28)
[  120.981802] [c056c090] (dump_stack+0x0/0x28) from [c0046d08] 
(warn_slowpath_common+0x70/0x90)
[  120.981830] [c0046c98] (warn_slowpath_common+0x0/0x90) from [c0046dcc] 
(warn_slowpath_fmt+0x38/0x40)
[  120.981856]  r8:c0855eb0 r7:0002 r6:f1000700 r5:0007 r4:80080003
[  120.981886] [c0046d94] (warn_slowpath_fmt+0x0/0x40) from [c02819ac] 
(l3_interrupt_handler+0x198/0x28c)
[  120.981900]  r3:c0801ab8 r2:c06cb354
[  120.981936] [c0281814] (l3_interrupt_handler+0x0/0x28c) from [c007162c] 
(handle_irq_event_percpu+0x54/0x1b8)
[  120.981962] [c00715d8] (handle_irq_event_percpu+0x0/0x1b8) from 
[c00717c0] (handle_irq_event+0x30/0x40)
[  120.981993] [c0071790] (handle_irq_event+0x0/0x40) from [c0074058] 
(handle_fasteoi_irq+0x74/0x128)
[  120.982006]  r4:ed0056c0 r3:
[  120.982033] [c0073fe4] (handle_fasteoi_irq+0x0/0x128) from [c0070f34] 
(generic_handle_irq+0x28/0x38)
[  120.982046]  r4:002a r3:c0073fe4
[  120.982085] [c0070f0c] (generic_handle_irq+0x0/0x38) from [c0015560] 
(handle_IRQ+0x38/0x8c)
[  120.982098]  r4:c080137c r3:0182
[  120.982124] [c0015528] (handle_IRQ+0x0/0x8c) from [c00087e0] 
(gic_handle_irq+0x30/0x5c)
[  120.982145]  r6:ec137dd0 r5:c07ac480 r4:fa24010c r3:0100
[  120.982169] [c00087b0] (gic_handle_irq+0x0/0x5c) from [c056fcc0] 
(__irq_svc+0x40/0x54)
[  120.982179] Exception stack(0xec137dd0 to 0xec137e18)
[  120.982195] 7dc0:  a1d3 
 0004
[  120.982216] 7de0: a153 ec1d9010 c080de90 ec137e30 c080debc  
ed756e44 ec137e2c
[  120.982232] 7e00: ec137de0 ec137e18 bf1150e4 bf115474 6153 
[  120.982253]  r7:ec137e04 r6: r5:6153 r4:bf115474
[  120.982327] [bf115438] (dwc3_complete+0x0/0x40 [dwc3]) from [c0338f50] 
(dpm_complete+0xd4/0x19c)
[  120.982341]  r5:ed756e10 r4:ed756e64
[  120.982370] [c0338e7c] (dpm_complete+0x0/0x19c) from [c0339034] 
(dpm_resume_end+0x1c/0x20)
[  120.982400] [c0339018] (dpm_resume_end+0x0/0x20) from [c006d4ec] 
(suspend_devices_and_enter+0x118/0x33c)
[  120.982412]  r4:c0833da4 r3:
[  120.982436] [c006d3d4] (suspend_devices_and_enter+0x0/0x33c) from 
[c006d928] (pm_suspend+0x218/0x254)
[  120.982458] [c006d710] (pm_suspend+0x0/0x254) from [c006c594] 
(state_store+0x70/0xc0)
[  120.982478]  r6:c057a6cc r5:c06a8320 r4:0003 r3:006d
[  120.982515] [c006c524] (state_store+0x0/0xc0) from [c0264cc0] 
(kobj_attr_store+0x1c/0x28)
[  120.982546] [c0264ca4] (kobj_attr_store+0x0/0x28) from [c012ccb8] 
(sysfs_write_file+0x170/0x1a4)
[  120.982583] [c012cb48] (sysfs_write_file+0x0/0x1a4) from [c00d17e4] 
(vfs_write+0xb8/0x190)
[  120.982611] [c00d172c] (vfs_write+0x0/0x190) from [c00d1bf8] 
(SyS_write+0x44/0x78)
[  120.982641] [c00d1bb4] (SyS_write+0x0/0x78) from [c0014660] 
(ret_fast_syscall+0x0/0x30)

Signed-off-by: Roger Quadros rog...@ti.com
Acked-by: Felipe Balbi ba...@ti.com
---
 drivers/usb/dwc3/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index d001417..10e 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -821,6 +821,7 @@ static void dwc3_complete(struct device *dev)
 
spin_lock_irqsave(dwc-lock, flags);
 
+   dwc3_event_buffers_setup(dwc);
switch (dwc-dr_mode) {
case USB_DR_MODE_PERIPHERAL:
case USB_DR_MODE_OTG:
@@ -828,7 +829,6 @@ static void dwc3_complete(struct device *dev)
/* FALLTHROUGH */
case USB_DR_MODE_HOST:
default:
-   dwc3_event_buffers_setup(dwc);
break;
}
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html