All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
To: Selvarasu Ganesan <selvarasu.g@samsung.com>
Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"jh0801.jung@samsung.com" <jh0801.jung@samsung.com>,
	"dh10.jung@samsung.com" <dh10.jung@samsung.com>,
	"akash.m5@samsung.com" <akash.m5@samsung.com>,
	"hongpooh.kim@samsung.com" <hongpooh.kim@samsung.com>,
	"eomji.oh@samsung.com" <eomji.oh@samsung.com>,
	"h10.kim@samsung.com" <h10.kim@samsung.com>,
	"shijie.cai@samsung.com" <shijie.cai@samsung.com>,
	"alim.akhtar@samsung.com" <alim.akhtar@samsung.com>,
	"muhammed.ali@samsung.com" <muhammed.ali@samsung.com>,
	"thiagu.r@samsung.com" <thiagu.r@samsung.com>,
	"pritam.sutar@samsung.com" <pritam.sutar@samsung.com>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH v3] usb: dwc3: gadget: Prevent EP resource conflicts during StartTransfer
Date: Wed, 7 Oct 2026 23:59:44 +0000	[thread overview]
Message-ID: <asbJfaj5OIhHBunD@vbox> (raw)
In-Reply-To: <98f16da0-5e24-4dd1-8f9f-79a1a5e7656c@samsung.com>

On Wed, Oct 07, 2026, Selvarasu Ganesan wrote:
> 
> Sorry for the format issue. The updated answers as below,
> 
> No, the endpoint completion event is not seen after the -ETIMEDOUT error.
> 
> The proposed fix works well for the __dwc3_gadget_ep_set_halt sequence, 
> where DWC3_EP_END_TRANSFER_PENDING must be set to prevent dwc3_ep_queue 
> from starting a new transfer during a EP transfer timeout.
> 
> But, this is unnecessary for __dwc3_gadget_ep_disable. Since there's no 
> way to clear the pending flag if the interrupt is missed and no 
> dwc3_ep_queue calls occur until the EP is re-enabled, preserving 
> DWC3_EP_END_TRANSFER_PENDING here provides no benefit.
> 
> So, the below changes is not necessary in ep disable,
> 

We still need to keep DWC3_EP_END_TRANSFER_PENDING in ep_disable. That's
for the normal case where the End Transfer completes after ep_disable
returns, which is the original issue. If the command never completes,
the endpoint resource is stuck regardless. Clearing the flag only lead
to a NO_RESOURCE error later.

As for the dwc3_gadget_ep_queue() race during giveback, keeping
DWC3_EP_TRANSFER_STARTED isn't right. We should reject the queue when
the endpoint is disabled. This should be a separate patch:

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index ee837235630a..eb6666b7bb98 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1084,6 +1084,8 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
 	reg &= ~DWC3_DALEPENA_EP(dep->number);
 	dwc3_writel(dwc, DWC3_DALEPENA, reg);
 
+	dep->flags &= ~DWC3_EP_ENABLED;
+
 	dwc3_remove_requests(dwc, dep, -ESHUTDOWN);
 
 	dep->stream_capable = false;
@@ -1990,7 +1992,8 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
 {
 	struct dwc3		*dwc = dep->dwc;
 
-	if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) {
+	if (!(dep->flags & DWC3_EP_ENABLED) || !dep->endpoint.desc ||
+	    !dwc->pullups_connected || !dwc->connected) {
 		dev_dbg(dwc->dev, "%s: can't queue to disabled endpoint\n",
 				dep->name);
 		return -ESHUTDOWN;


The End Transfer command not completing is also a separate issue. I
asked you to check whether the command would eventually complete with
the additional code, and it appears it doesn't.

Can you provide some more info on your setup:
 * IP and version
 * connected speed
 * endpoint direction (is it always OUT?)
 * Is there any active transfer
 * tracepoints

Thanks,
Thinh

  reply	other threads:[~2026-10-08  0:00 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20260227121338epcas5p4baebb406db37f07223545b2f85751bf2@epcas5p4.samsung.com>
2026-02-27 12:12 ` [PATCH v3] usb: dwc3: gadget: Prevent EP resource conflicts during StartTransfer Selvarasu Ganesan
2026-02-28  0:27   ` Thinh Nguyen
2026-03-03  0:39     ` Thinh Nguyen
2026-03-06 13:06       ` Selvarasu Ganesan
2026-03-06 21:41         ` Thinh Nguyen
2026-09-24 12:05           ` Selvarasu Ganesan
2026-09-24 12:24             ` Selvarasu Ganesan
2026-09-29  3:08             ` Thinh Nguyen
2026-09-29  7:04               ` Selvarasu Ganesan
2026-10-03  1:59                 ` Thinh Nguyen
2026-10-06 15:52                   ` Selvarasu Ganesan
2026-10-07  2:06                     ` Thinh Nguyen
2026-10-07 13:57                       ` Selvarasu Ganesan
2026-10-07 14:14                         ` Selvarasu Ganesan
2026-10-07 23:59                           ` Thinh Nguyen [this message]
2026-10-08  4:37                             ` Selvarasu Ganesan
2026-10-09  0:27                               ` Thinh Nguyen
2026-10-12 16:52                                 ` Selvarasu Ganesan
2026-10-13  1:52                                   ` Thinh Nguyen
2026-10-13  3:08                                     ` Selvarasu Ganesan

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=asbJfaj5OIhHBunD@vbox \
    --to=thinh.nguyen@synopsys.com \
    --cc=akash.m5@samsung.com \
    --cc=alim.akhtar@samsung.com \
    --cc=dh10.jung@samsung.com \
    --cc=eomji.oh@samsung.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=h10.kim@samsung.com \
    --cc=hongpooh.kim@samsung.com \
    --cc=jh0801.jung@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=muhammed.ali@samsung.com \
    --cc=pritam.sutar@samsung.com \
    --cc=selvarasu.g@samsung.com \
    --cc=shijie.cai@samsung.com \
    --cc=stable@vger.kernel.org \
    --cc=thiagu.r@samsung.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.