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. > latest reset stall patch: > https://git.kernel.org/cgit/linux/kernel/git/mnyman/xhci.git/commit/?h=reset-rework-v2&id=263ae54010ffadec17741f7215de64ad40a4bf5e > > fix doorbell ring patch (already tested by Felipe): > https://git.kernel.org/cgit/linux/kernel/git/mnyman/xhci.git/commit/?h=reset-rework-v2&id=c96885c658294fef593f2109d194fa07d140c384 Looks like both patches need to have a Fixes and Cc: stable added to them. Now let me build and run this branch. -- balbi
Attachment:
signature.asc
Description: Digital signature