Re: [RFC/PATCH v2] usb: host: xhci: issue 'Reset Endpoint' for !CONTROL EPs from finish_td()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 14, 2014 at 06:37:33PM +0200, Mathias Nyman wrote:
> On 14.11.2014 17:49, Felipe Balbi wrote:
> > Hi,
> > 
> > On Fri, Nov 14, 2014 at 09:04:16AM -0600, Felipe Balbi wrote:
> >> On Fri, Nov 14, 2014 at 10:39:15AM +0200, Mathias Nyman wrote:
> >>> On 13.11.2014 20:46, Felipe Balbi wrote:
> >>>> On Thu, Nov 13, 2014 at 12:31:28PM -0600, Felipe Balbi wrote:
> >>>>> Hi,
> >>>>>
> >>>>> (your mailing is un-wrapping emails, I always end up with pretty long
> >>>>> lines and have to rewrap them)
> >>>>>
> >>>>> On Thu, Nov 13, 2014 at 07:58:28PM +0200, Mathias Nyman wrote:
> >>>>>>> The algorithm described in the DVB tuner bug is clearly wrong, since
> >>>>>>> it doesn't move the dequeue pointer until usb_clear_halt() is
> >>>>>>> called, which is far too late.  The right approach is to fix up the
> >>>>>>> dequeue pointer before giving back the URB (so there's no need to
> >>>>>>> save a "stopped TD" value).  Otherwise there will be TDs in the
> >>>>>>> endpoint ring containing stale DMA pointers to buffers that have
> >>>>>>> already been unmapped.
> >>>>>>
> >>>>>> Thats right, I cleaned up the patch and removed resetting the endpoint
> >>>>>> from the .endpoint_reset() callback which was called as a result of
> >>>>>> usb_clear_halt(). Now we queue a reset endpoint and set dequeue
> >>>>>> pointer before giving back the URB.
> >>>>>>
> >>>>>> I still set a "stopped td" value, but could as well just pass it as
> >>>>>> function parameter.  Actually I'll do that in later cleanup patch.
> >>>>>>
> >>>>>> Latest version of the patch is now in my tree in a reset-rework-v2
> >>>>>> branch, with fixes comments and removed The brach includes the other
> >>>>>> dorbell ringing patch as well.  both are on top of 3.18-rc4.
> >>>>>>
> >>>>>> I still need to test it before sending it further, the tree is here:
> >>>>>>
> >>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git  reset-rework-v2
> >>>>>
> >>>>> I'll test this one.
> >>>>
> >>>> for both commits on that branch, you can add my:
> >>>>
> >>>> Tested-by: Felipe Balbi <balbi@xxxxxx>
> >>>>
> >>>> But please also add proper fixes and Cc: stable, so older kernels can
> >>>> use those.
> >>>>
> >>>
> >>> Thanks a lot for testing again.
> >>>
> >>> I'll CC stable and add your tested-by, but I still don't know exactly
> >>> which commit it Fixes. This might have been there since the early days
> >>> of xhci.
> >>
> >> git blame usually helps. Just look for code which was differentiating
> >> COMP_STALL and treating it differently. I know that at least v3.14 has
> >> the problem.
> > 
> > Here you go:
> > 
> > Fixes: bcef3fd (USB: xhci: Handle errors that cause endpoint halts.)
> > Cc: <stable@xxxxxxxxxxxxxxx> # v2.6.33+
> > 
> > Please make sure to send these patches ASAP otherwise they will not hit
> > v3.18-final, it's getting pretty late.
> > 
> 
> Amazing, was still struggling trying to figure out which one it was.
> It goes back a long way, I'll send the patches right away.

cool, thanks :-)

> I btw now got a device I should be able to load gzero on, once I figure
> out how to flash it.

let me know if you need help with getting dwc3 running (I'm assuming you
have one of the baytrail skus with peripheral mode support).

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]