stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] usb: musb: fix bogus rx endpoint interrupt
@ 2016-11-24  4:43 Bin Liu
  2016-11-24  4:43 ` [PATCH 1/2] usb: musb: core: add clear_ep_rxintr() to musb_platform_ops Bin Liu
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Bin Liu @ 2016-11-24  4:43 UTC (permalink / raw)
  To: linux-usb; +Cc: stable

Hi,

This fixes a long standing musb bogus rx interrupt problem. I am not sure on
other platforms, but on AM335x with CPPI DMA enabled, occasionally any of the
following kernel messages shows up from musb driver. (The endpoint number is
random, of cause.)

    musb_host_rx 1853: BOGUS RX2 ready, csr 0000, count 0

    musb_host_rx 1936: RX3 dma busy, csr 2020

In one of the test cases with FT4232H I observed the issue when sometimes
closing the uart port. It turns out the issue is that during handling urb
dequeue, the controller is still receiving data while the CPPI channel is
already aborted, then musb core generates endpoint rx interrupt, instead of
rx dma interrupt in normal rx transfer.

Based on the inline comments, the fix is to call the new platform ops to clear
the rx ep interrupt in musb_cleanup_urb().

I am not sure if this fix should be back ported to all stable trees, but I
only tested up to v4.1, so cc'd stable v4.1+.

Regards,
-Bin.
---

Bin Liu (2):
  usb: musb: core: add clear_ep_rxintr() to musb_platform_ops
  usb: musb: dsps: implement clear_ep_rxintr() callback

 drivers/usb/musb/musb_core.h |  7 +++++++
 drivers/usb/musb/musb_dsps.c | 12 ++++++++++++
 drivers/usb/musb/musb_host.c | 10 ++++------
 3 files changed, 23 insertions(+), 6 deletions(-)

-- 
1.9.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-24  4:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-24  4:43 [PATCH 0/2] usb: musb: fix bogus rx endpoint interrupt Bin Liu
2016-11-24  4:43 ` [PATCH 1/2] usb: musb: core: add clear_ep_rxintr() to musb_platform_ops Bin Liu
2016-11-24  4:43 ` [PATCH 2/2] usb: musb: dsps: implement clear_ep_rxintr() callback Bin Liu
2016-11-24  4:54 ` [PATCH 0/2] usb: musb: fix bogus rx endpoint interrupt Bin Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).