Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1500066

Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq

From Baolin Wang <baolin.wang@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq
Date 2016-10-13 09:40 +0200
Message-ID <srIMq-vI-13@gated-at.bofh.it> (permalink)
References <srq37-3LI-5@gated-at.bofh.it> <srICJ-rU-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Hi,

On 13 October 2016 at 15:02, Felipe Balbi <balbi@kernel.org> wrote:
>
> Hi,
>
> Baolin Wang <baolin.wang@linaro.org> writes:
>> @@ -1742,6 +1791,17 @@ static int dwc3_gadget_stop(struct usb_gadget *g)
>>       dwc->gadget_driver      = NULL;
>>       spin_unlock_irqrestore(&dwc->lock, flags);
>>
>> +     /*
>> +      * Since the xHCI will share the same interrupt with gadget, thus when
>> +      * free the gadget irq, it will not shutdown this gadget irq line. Then
>> +      * the gadget driver can not handle the end transfer command complete
>> +      * event after free the gadget irq, which will hang the system to crash.
>> +      *
>> +      * So we should wait for the end transfer command complete event before
>> +      * free it to avoid this situation.
>> +      */
>> +     dwc3_wait_command_complete(dwc);
>
> this doesn't make sense. We have already masked all interrupts before
> getting here. We have also, already, disabled all endpoints.

No, you just mask the interrupts described in DEVTEN register, and you
did not disable the endpoint command complete event.

>
> I'm thinking this is a bug in configfs interface of Gadget API, not
> dwc3. The only reason for this to happen would be if we get to
> ->udc_stop() with endpoints still enabled.
>
> Can you check if that's the case? i.e. can you check if any endpoints
> are still enabled when we get here?

No, it is not any endpoints are still enabled. Like I said in commit
message, we will start end transfer command when disable the endpoint,
if the end transfer command complete event comes after we have freed
the gadget irq, it will trigger the interrupt line all the time to
crash the system.

-- 
Baolin.wang
Best Regards

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-12 13:40 +0200
  Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 09:30 +0200
    Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-13 09:40 +0200
      Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 10:00 +0200
        Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-13 10:10 +0200
          Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 12:00 +0200
            Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 13:00 +0200
              Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-13 13:20 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 13:30 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-13 15:10 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-13 15:40 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-14 09:10 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-14 09:50 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Baolin Wang <baolin.wang@linaro.org> - 2016-10-14 11:20 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-14 12:00 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete  before free irq Alan Stern <stern@rowland.harvard.edu> - 2016-10-14 16:40 +0200
                Re: [PATCH v2] usb: dwc3: gadget: Wait for end transfer complete before free irq Felipe Balbi <balbi@kernel.org> - 2016-10-17 10:20 +0200

csiph-web