stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ran Wang <ran.wang_1@nxp.com>
To: Tejas Joglekar <Tejas.Joglekar@synopsys.com>,
	Felipe Balbi <balbi@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	Jun Li <jun.li@nxp.com>, Peter Chen <peter.chen@nxp.com>
Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>,
	Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Subject: RE: [PATCH] usb: dwc3: gadget: Fix controller get stuck when kicking extra transfer in wrong case
Date: Wed, 8 Jan 2020 02:38:18 +0000	[thread overview]
Message-ID: <DB8PR04MB6826D2A83F2DD353F9647B2EF13E0@DB8PR04MB6826.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <9f9d0193-8fe6-33b3-4f5c-95a1181e6681@synopsys.com>

Hi Tejas,


On Tuesday, January 07, 2020 18:16, Tejas Joglekar wrote:
> Hi,
> On 1/7/2020 12:44 PM, Ran Wang wrote:
> > According to original commit c96e6725db9d6a ("usb: dwc3: gadget:
> > Correct the logic for queuing sgs"), we would only kick off another
> > transfer in case of
> > req->num_pending_sgs > 0.
> >
> The commit 8c7d4b7b3d43 ("usb: dwc3: gadget: Fix logical condition") fixes
> the commit f38e35dd84e2 (usb: dwc3: gadget: split
> dwc3_gadget_ep_cleanup_completed_requests()).

Yes, actually I have tried to dig the history of this implementation as much as I can.
and the commit I mentioned looks like the first one to add this function.
 
> > However, current logic will do this as long as req->remaining > 0,
> > this will include the case of non-sgs (both
> > dwc3_gadget_ep_request_completed(req) and
> > req->num_pending_sgs are 0) that we did not want to.
> >
> > Without this fix, we observed dwc3 got stuck on Layerscape plaftorms
> > (such as
> > LS1088ARDB) when enabling gadget (mass storage function) as below:
> >
> Similar issue was reported by Thinh after my fix, and he has submitted a
> patch for the same. You can refer the discussion
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.kernel.org%2Fpatch%2F11292087%2F&amp;data=02%7C01%7Cran.wan
> g_1%40nxp.com%7C97345f38c19849e5a82608d7935a8d31%7C686ea1d3bc2b
> 4c6fa92cd99c5c301635%7C0%7C0%7C637139889495749889&amp;sdata=tcV6
> FWjqvYYO7BCByACqAg%2FB%2B%2Fz3NC%2B20%2BIEVuyfJc4%3D&amp;reser
> ved=0.

Thanks for this information. I will follow that thread.

Regards,
Ran

> > [   27.923959] Mass Storage Function, version: 2009/09/11
> > [   27.929115] LUN: removable file: (no medium)
> > [   27.933432] LUN: file: /run/media/sda1/419/test
> > [   27.937963] Number of LUNs=1
> > [   27.941042] g_mass_storage gadget: Mass Storage Gadget, version:
> 2009/09/11
> > [   27.948019] g_mass_storage gadget: userspace failed to provide
> iSerialNumber
> > [   27.955069] g_mass_storage gadget: g_mass_storage ready
> > [   28.411188] g_mass_storage gadget: super-speed config #1: Linux File-
> Backed Storage
> > [   48.319766] g_mass_storage gadget: super-speed config #1: Linux File-
> Backed Storage
> > [   68.320794] g_mass_storage gadget: super-speed config #1: Linux File-
> Backed Storage
> > [   88.319898] g_mass_storage gadget: super-speed config #1: Linux File-
> Backed Storage
> > [  108.320808] g_mass_storage gadget: super-speed config #1: Linux
> > File-Backed Storage [  128.323419] g_mass_storage gadget: super-speed
> > config #1: Linux File-Backed Storage [  148.320857] g_mass_storage
> > gadget: super-speed config #1: Linux File-Backed Storage [
> > 148.362023] g_mass_storage gadget: super-speed config #0: unconfigured
> >
> > Fixes: 8c7d4b7b3d43 ("usb: dwc3: gadget: Fix logical condition")
> >
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
> > ---
> >  drivers/usb/dwc3/gadget.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> > index 0c960a9..5b0f02f 100644
> > --- a/drivers/usb/dwc3/gadget.c
> > +++ b/drivers/usb/dwc3/gadget.c
> > @@ -2491,7 +2491,7 @@ static int
> > dwc3_gadget_ep_cleanup_completed_request(struct dwc3_ep *dep,
> >
> >  	req->request.actual = req->request.length - req->remaining;
> >
> > -	if (!dwc3_gadget_ep_request_completed(req) ||
> > +	if (!dwc3_gadget_ep_request_completed(req) &&
> >  			req->num_pending_sgs) {
> >  		__dwc3_gadget_kick_transfer(dep);
> >  		goto out;
> >
> 
> Thanks & Regards,
>  Tejas Joglekar

  reply	other threads:[~2020-01-08  2:38 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-07  7:14 [PATCH] usb: dwc3: gadget: Fix controller get stuck when kicking extra transfer in wrong case Ran Wang
2020-01-07 10:15 ` Tejas Joglekar
2020-01-08  2:38   ` Ran Wang [this message]
2020-01-09  9:05   ` Felipe Balbi

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=DB8PR04MB6826D2A83F2DD353F9647B2EF13E0@DB8PR04MB6826.eurprd04.prod.outlook.com \
    --to=ran.wang_1@nxp.com \
    --cc=Tejas.Joglekar@synopsys.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jun.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=peter.chen@nxp.com \
    --cc=stable@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).