USB: error messages on DWC3 gadget endpoint dequeue
João Paulo Silva Gonçalves
joao.goncalves at toradex.com
Fri Sep 15 17:17:32 CEST 2023
Hi Rasmus,
Make sense to me. At least now I know that these messages
are not a critical error and will not give me problems
on the future.
Thanks for the patch too.
Regards,
João Paulo
On Fri, 2023-09-15 at 15:47 +0200, Rasmus Villemoes wrote:
> This message originated from outside your organization
>
> On 15/09/2023 15.05, João Paulo Silva Gonçalves wrote:
> > Hi Marek,
> >
> > I was testing fastboot image download over usb for imx8mp (from usb
> > recovery patch of verdin-imx8mp) and i am having error messages on
> > endpoint request dequeue function of DWC3 gadget controller. However,
> > download is working fine, so this message may not be an error. They are
> > happening because fastboot tx before sending a new usb request dequeue
> > the same request, maybe to be sure it does not send it twice. Can I
> > just ignore these messages? Maybe change its log level to dbg instead
> > of error? What do you think? The messages I am seeing are below and are
> > the ones with "... was not queued to ep1in-bulk".
>
> We apply this internally (sorry if it's whitespace damaged), but I never
> fully understood the problem nor how the referenced kernel thread was
> resolved, which is why I haven't sent it upstream yet.
>
> dwc3: gadget: Handle dequeuing of non queued request gracefully
>
> Trying to dequeue an request that is currently not queued should be
> a no-op
> and be handled gracefully.
>
> Checking on list/queue empty indicate whether the request is queue
> or not.
> Handling this gracefully allows for race condition free synchronization
> between the complete callback being called to to a completed
> transfer and
> trying to call usb_ep_dequeue() at the same time.
>
> Inspired by:
> https://patchwork.kernel.org/project/linux-usb/patch/20191106144553.16956-1-alexandru.ardelean@analog.com/
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index eb416b832aa..378d19d8e99 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -1113,6 +1113,9 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
>
> spin_lock_irqsave(&dwc->lock, flags);
>
> + if (list_empty(&dep->request_list) && list_empty(&dep->req_queued))
> + goto out0;
> +
> list_for_each_entry(r, &dep->request_list, list) {
> if (r == req)
> break;
>
> Rasmus
More information about the U-Boot
mailing list