U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Anders Roxell <anders.roxell@linaro.org>
To: Anshul Dalal <anshuld@ti.com>
Cc: u-boot@lists.u-boot-project.org, marek.vasut@mailbox.org,
	trini@konsulko.com, ilias.apalodimas@linaro.org,
	michal.simek@amd.com, lukma@denx.de, alchark@flipper.net,
	jerome.forissier@arm.com, dlechner@baylibre.com,
	sjg@chromium.org, Chintan Vankar <c-vankar@ti.com>,
	Siddharth Vadapalli <s-vadapalli@ti.com>
Subject: Re: [PATCH v7 00/24] usb: dwc3: part 2, make the resynced code work
Date: Wed, 26 Aug 2026 10:29:52 +0200	[thread overview]
Message-ID: <ao6kAOgauISZ1-dx@monster> (raw)
In-Reply-To: <178765097973.1498018.5668901885485543636.b4-review@b4>

On 2026-08-25 15:12, Anshul Dalal wrote:
> On Mon, 24 Aug 2026 17:41:09 +0200, Anders Roxell <anders.roxell@linaro.org> wrote:
> > [...]
> > dwc2 with and without DM_USB_GADGET, at91_udc, atmel_usba_udc, ci_udc,
> > musb-new and mtu3. 17 boards in total.
> > 
> > DFU is tested on hardware on BeagleBoard-X15, and on BeaglePlay by
> > Anshul. ci_udc is tested on an i.MX93 board with ums. The rest is build
> > tested only.
> 
> Hi Anders,
> 
> Thanks for reworking the series, I was able to get DFU boot to work properly
> and the usb devices are being discovered properly too.
> 
> Though I ran into an issue while using ums with your patches as the host isn't
> able to detect the connected device. With default logs I only see a
> '\dwc3-generic-peripheral usb@31000000: unknown endpoint event 0'.
> 
> Further debug logs are below on TI's AM62p EVM:
> 
> @    => ums mmc 1
> @    UMS: LUN 0, dev mmc 1, hwpart 0, sector 0x0, count 0x3b72400
> @    g_dnl_register: g_dnl_driver.name = usb_dnl_ums
> @    g_dnl_bind: gadget: 0x00000000fde7fb68 cdev: 0x00000000fde5cdd0
> @    usb_add_config: adding config #1 'usb_dnload'/00000000fde83cc0
> @    g_dnl_do_config: configuration: 0x00000000fde83cc0 composite dev: 0x00000000fde5cdd0
> @    adding 'Mass Storage Function'/00000000fde5c110 to config 'usb_dnload'/00000000fde83cc0
> @    cfg 1/00000000fde83cc0 speeds: high full
> @    usb_add_config: interface 0 = Mass Storage Function/00000000fde5c110
> @    g_dnl_bind: calling usb_gadget_connect for controller 'dwc3-gadget'
> @    usb_dnl_ums: ready
> @    -dwc3-generic-peripheral usb@31000000: unknown endpoint event 0
> @    |set_config: high speed config #1: usb_dnload
> @    \non-core control reqa1.fe v0000 i0000 l1
> 
> I observed a similar issue on the beagleplay too. Regards!

Hi Anshul,

I could reproduce it on my BeagleBoard-X15. First I only saw it connect
and got happy, so I forgot to look for the disk. It never shows up, and
the host gives up after 20 seconds.

The resync dropped the cache maintenance in dwc3 gadget.c. The
controller reads a stale trb and nothing moves, that is your "unknown
endpoint event 0". DFU still worked because it only uses ep0.

With the diff below the disk shows up and 64 MiB reads back correctly.
It applies on v7.

Can you try ums on AM62p and BeaglePlay? Please let me know how it goes
before I send the next version.


Cheers,
Anders

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 028ebd9b9c79..fd0ae9e3e092 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -228,6 +228,10 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req,
 	dwc3_gadget_del_and_unmap_request(dep, req, status);
 	req->status = DWC3_REQUEST_STATUS_COMPLETED;
 
+	if (req->request.dma && req->request.length)
+		dwc3_invalidate_cache((uintptr_t)req->request.dma,
+				      req->request.length);
+
 	spin_unlock(&dwc->lock);
 	usb_gadget_giveback_request(&dep->endpoint, &req->request);
 	spin_lock(&dwc->lock);
@@ -1382,9 +1386,12 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
 	 * controller to observe the HWO bit set prematurely.
 	 * Add a write memory barrier to prevent CPU re-ordering.
 	 */
-	// FIXME wmb();
+	wmb();
 	trb->ctrl |= DWC3_TRB_CTRL_HWO;
 
+	dwc3_flush_cache((uintptr_t)dma, trb_length);
+	dwc3_flush_cache((uintptr_t)trb, sizeof(*trb));
+
 	dwc3_ep_inc_enq(dep);
 }
 
@@ -3153,6 +3160,8 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep,
 {
 	unsigned int		count;
 
+	dwc3_invalidate_cache((uintptr_t)trb, sizeof(*trb));
+
 	dwc3_ep_inc_deq(dep);
 
 	req->num_trbs--;
@@ -4181,7 +4190,7 @@ static irqreturn_t dwc3_process_event_buf(struct dwc3_event_buffer *evt)
 	 * Add an explicit write memory barrier to make sure that the update of
 	 * clearing DWC3_EVENT_PENDING is observed in dwc3_check_event_buf()
 	 */
-	// FIXME wmb();
+	wmb();
 
 	if (dwc->imod_interval) {
 		dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), DWC3_GEVNTCOUNT_EHB);

  reply	other threads:[~2026-08-26 13:02 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24 15:41 [PATCH v7 00/24] usb: dwc3: part 2, make the resynced code work Anders Roxell
2026-08-24 15:41 ` [PATCH v7 01/24] dm: add helpers needed by the resynced DWC3 code Anders Roxell
2026-09-11 12:16   ` Mattijs Korpershoek
2026-08-24 15:41 ` [PATCH v7 02/24] usb: phy: add the usb_phy " Anders Roxell
2026-09-11 12:17   ` Mattijs Korpershoek
2026-08-24 15:41 ` [PATCH v7 03/24] usb: gadget: adapt the gadget API after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 04/24] usb: gadget: udc: make udc-core build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 05/24] usb: dwc3: make the core driver " Anders Roxell
2026-08-24 15:41 ` [PATCH v7 06/24] usb: dwc3: bring back the samsung usb phy driver Anders Roxell
2026-08-24 15:41 ` [PATCH v7 07/24] usb: dwc3: make gadget and ep0 build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 08/24] usb: gadget: udc: enable async callbacks on bind Anders Roxell
2026-08-24 15:41 ` [PATCH v7 09/24] usb: dwc3: ep0: flush and invalidate cache around ep0 transfers Anders Roxell
2026-08-24 15:41 ` [PATCH v7 10/24] usb: dwc3: make the am62 glue build in u-boot Anders Roxell
2026-08-24 15:41 ` [PATCH v7 11/24] usb: gadget: ci_udc: move to the udc-core registration Anders Roxell
2026-08-24 15:41 ` [PATCH v7 12/24] usb: gadget: ci_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 13/24] usb: gadget: dwc2_udc_otg: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 14/24] usb: gadget: fix up the function drivers " Anders Roxell
2026-08-24 15:41 ` [PATCH v7 15/24] usb: gadget: fix up the last UDC " Anders Roxell
2026-08-24 15:41 ` [PATCH v7 16/24] usb: gadget: atmel_usba_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 17/24] usb: gadget: at91_udc: register with udc-core Anders Roxell
2026-08-24 15:41 ` [PATCH v7 18/24] usb: gadget: at91_udc: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 19/24] usb: musb-new: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 20/24] usb: musb-new: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 21/24] usb: mtu3: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 22/24] usb: mtu3: set endpoint capabilities Anders Roxell
2026-08-24 15:41 ` [PATCH v7 23/24] usb: host: xhci: fix up after the resync Anders Roxell
2026-08-24 15:41 ` [PATCH v7 24/24] usb: cdns3: " Anders Roxell
2026-08-25  9:42 ` [PATCH v7 00/24] usb: dwc3: part 2, make the resynced code work Anshul Dalal
2026-08-26  8:29   ` Anders Roxell [this message]
2026-08-27  7:48     ` Anshul Dalal
2026-08-28 12:26       ` Anders Roxell
2026-09-11 10:33 ` Love Kumar

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=ao6kAOgauISZ1-dx@monster \
    --to=anders.roxell@linaro.org \
    --cc=alchark@flipper.net \
    --cc=anshuld@ti.com \
    --cc=c-vankar@ti.com \
    --cc=dlechner@baylibre.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jerome.forissier@arm.com \
    --cc=lukma@denx.de \
    --cc=marek.vasut@mailbox.org \
    --cc=michal.simek@amd.com \
    --cc=s-vadapalli@ti.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.u-boot-project.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