Re: [PATCH 085/143] USB: EHCI: update toggle state for linked QHs

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

 



On Mon, 15 Jun 2009, Greg Kroah-Hartman wrote:

> From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> 
> This patch (as1245) fixes a bug in ehci-hcd.  When an URB is queued
> for an endpoint whose QH is already in the LINKED state, the QH
> doesn't get refreshed.  As a result, if usb_clear_halt() was called
> during the time that the QH was linked but idle, the data toggle value
> in the QH doesn't get reset.
> 
> The symptom is that after a clear_halt, data gets lost and transfers
> time out.  This problem is starting to show up now because the
> "ehci-hcd unlink speedups" patch causes QHs with no queued URBs to
> remain linked for a suitable time.
> 
> The patch utilizes the new endpoint_reset mechanism to fix the
> problem.  When an endpoint is reset, the new method forcibly unlinks
> the QH (if necessary) and safely updates the toggle value.  This
> allows qh_update() to be simplified and avoids using usb_device's
> toggle bits in a rather unintuitive way.

This patch is not correct as it stands.  It can call
schedule_timeout_uninterruptible() while in interrupt context.  It
needs to be fixed by the followup patch:

	http://marc.info/?l=linux-usb&m=124474662006206&w=2

I hope this will be sent to Linus before the merge window ends.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux