Patch "Revert "usb: dwc3: gadget: drop unnecessary loop when cleaning up TRBs"" has been added to the 4.3-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
Revert "usb: dwc3: gadget: drop unnecessary loop when cleaning up TRBs"
to the 4.3-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
revert-usb-dwc3-gadget-drop-unnecessary-loop-when-cleaning-up-trbs.patch
and it can be found in the queue-4.3 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
d115d7050a0d2c4967532f18c9cb522fea6b7280Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
Date: Mon, 31 Aug 2015 19:48:28 +0300
Subject: Revert "usb: dwc3: gadget: drop unnecessary loop when cleaning up TRBs"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
commit d115d7050a0d2c4967532f18c9cb522fea6b7280 upstream.
This reverts commit 8f2c9544aba636134303105ecb164190a39dece4.
As it breaks g_ether on my Baytrail FFRD8 device. Everything starts out fine, but after a bit of data has been transferred it just stops flowing.
Note that I do get a bunch of these "NOHZ: local_softirq_pending 08" when booting the machine, but I'm not really sure if they're related to this problem.
--- drivers/usb/dwc3/gadget.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-)
drivers/usb/dwc3/gadget.c +21 -16
@@ -1872,27 +1872,32 @@ static int dwc3_cleanup_done_reqs(structunsigned int i;int ret; - req =next_request (&dep->req_queued); -if (!req) { -WARN_ON_ONCE (1 ); -return 1 ; - } - i =0 ;do { - slot = req->start_slot + i; -if ((slot ==DWC3_TRB_NUM -1 ) && + req =next_request (&dep->req_queued); +if (!req) { +WARN_ON_ONCE (1 ); +return 1 ; + } + i =0 ; +do { + slot = req->start_slot + i; +if ((slot ==DWC3_TRB_NUM -1 ) &&usb_endpoint_xfer_isoc (dep->endpoint.desc)) - slot++; - slot %=DWC3_TRB_NUM ; - trb = &dep->trb_pool[slot]; + slot++; + slot %=DWC3_TRB_NUM ; + trb = &dep->trb_pool[slot]; + + ret =__dwc3_cleanup_done_trbs (dwc, dep, req, trb, + event, status); +if (ret) +break ; + }while (++i < req->request.num_mapped_sgs); + +dwc3_gadget_giveback (dep, req, status); - ret =__dwc3_cleanup_done_trbs (dwc, dep, req, trb, - event, status);if (ret)break ; - }while (++i < req->request.num_mapped_sgs); - -dwc3_gadget_giveback (dep, req, status); + }while (1 );if (usb_endpoint_xfer_isoc (dep->endpoint.desc) &&list_empty (&dep->req_queued)) {
Patches currently in stable-queue which might be from [email protected] are
queue-4.3/revert-usb-dwc3-gadget-drop-unnecessary-loop-when-cleaning-up-trbs.patch