From: "Måns Rullgård" <mans@mansr.com>
To: linux-usb@vger.kernel.org
Subject: MUSB interrupt storm on device removal
Date: Mon, 17 Dec 2018 15:13:12 +0000 [thread overview]
Message-ID: <yw1xefag5gqf.fsf@mansr.com> (raw)
I have a strange problem with the musb driver in host mode on AM3358
(beaglebone) hardware. If I connect a multi-port serial adapter and
open two or more of the ttys, then unplug the device, an interrupt storm
ensues that makes the system completely unresponsive until the watchdog
resets it. Enabling some debug messages, I get this repeated endlessly:
musb-hdrc musb-hdrc.1: usbintr (0) epintr(1c0000)
musb-hdrc musb-hdrc.1: end 2 RX proto error
musb-hdrc musb-hdrc.1: ... next ep2 RX urb 72aabc13
musb-hdrc musb-hdrc.1: <-- hw2 urb 72aabc13 spd3 dev4 ep3in h_addr02 h_port00 bytes 4096
musb-hdrc musb-hdrc.1: RXCSR2 := 2020
musb-hdrc musb-hdrc.1: end 3 RX proto error
musb-hdrc musb-hdrc.1: ... next ep3 RX urb 94c2cc43
musb-hdrc musb-hdrc.1: <-- hw3 urb 94c2cc43 spd3 dev4 ep2in h_addr02 h_port00 bytes 4096
musb-hdrc musb-hdrc.1: RXCSR3 := 2020
musb-hdrc musb-hdrc.1: end 4 RX proto error
musb-hdrc musb-hdrc.1: ... next ep4 RX urb cbdc39c6
musb-hdrc musb-hdrc.1: <-- hw4 urb cbdc39c6 spd3 dev4 ep5in h_addr02 h_port00 bytes 4096
musb-hdrc musb-hdrc.1: RXCSR4 := 2020
This happens with both a two-port FTDI serial adapter and a Simcom GSM
modem (Qualcomm based) using the "option" driver. In both cases, the
problem occurs only if two or more of the ttys are opened when the
device is unplugged.
Applying the patch below makes this problem go away, though it most
likely breaks something else. I'm only posting it here in case it helps
identify the cause of the error.
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index b59ce9ad14ce..addf9197689c 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -337,6 +337,7 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,
qh->is_ready = 0;
musb_giveback(musb, urb, status);
+ if (status != -EPROTO)
qh->is_ready = ready;
/* reclaim resources (and bandwidth) ASAP; deschedule it, and
@@ -2465,12 +2466,14 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
if (musb_ep_get_qh(qh->hw_ep, is_in) == qh) {
urb = next_urb(qh);
+ if (urb) {
/* make software (then hardware) stop ASAP */
if (!urb->unlinked)
urb->status = -ESHUTDOWN;
/* cleanup */
musb_cleanup_urb(urb, qh);
+ }
/* Then nuke all the others ... and advance the
* queue on hw_ep (e.g. bulk ring) when we're done.
next reply other threads:[~2018-12-17 15:13 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-17 15:13 Måns Rullgård [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-12-17 18:44 MUSB interrupt storm on device removal Bin Liu
2018-12-17 19:16 Måns Rullgård
2018-12-17 20:56 Bin Liu
2018-12-17 21:36 Måns Rullgård
2019-01-09 13:19 Måns Rullgård
2019-01-10 3:07 Bin Liu
2019-01-18 20:15 Måns Rullgård
2019-01-21 16:31 Bin Liu
2019-01-21 21:20 Måns Rullgård
2019-01-22 14:57 Bin Liu
2019-01-22 17:19 Måns Rullgård
2019-01-22 20:16 Bin Liu
2019-01-22 20:52 Bin Liu
2019-01-23 6:52 Greg KH
2019-01-23 8:55 Johan Hovold
2019-01-23 14:09 Bin Liu
2019-01-23 14:55 Johan Hovold
2019-01-23 15:21 Bin Liu
2019-01-23 16:05 Alan Stern
2019-01-23 16:53 Bin Liu
2019-01-23 17:42 Alan Stern
2019-01-23 20:12 Bin Liu
2019-01-23 20:44 Alan Stern
2019-01-23 20:50 Måns Rullgård
2019-01-24 8:11 Greg Kroah-Hartman
2019-01-24 9:22 Johan Hovold
2019-01-24 9:25 Johan Hovold
2019-01-24 12:56 Måns Rullgård
2019-01-24 15:22 Alan Stern
2019-01-24 15:40 Bin Liu
2019-01-24 15:43 Bin Liu
2019-01-24 15:49 Alan Stern
2019-01-24 15:54 Bin Liu
2019-01-24 16:31 Måns Rullgård
2019-01-25 15:43 Bin Liu
2019-03-05 11:30 Måns Rullgård
2019-03-07 16:16 Bin Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=yw1xefag5gqf.fsf@mansr.com \
--to=mans@mansr.com \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).