Re: [RFC 8/9] xHCI 1.0: Incompatible Device Error

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

 



On Thu, 5 May 2011, Sarah Sharp wrote:

> On Thu, May 05, 2011 at 06:14:11PM +0800, Andiry Xu wrote:
> > From: Alex He <alex.he@xxxxxxx>
> > 
> > This is a new TRB Completion Code of the xHCI spec 1.0.
> > Asserted if the xHC detects a problem with a device that does not allow it to
> > be successfully accessed, e.g. due to a device commpliance or compatibility
> > problem. This error may be returned by any command or transfer, and is fatal
> > as far as the Slot is concerned. Software shall issue a Disable Slot Commmand
> > to recover.
> 
> How is the upper layer supposed to know the slot is now disabled?  It
> seems like a policy violation to let the xHCI driver just randomly
> disable devices.  Shouldn't you let the USB core decide whether it needs
> to logically disconnect the device and disable the slot?
> 
> You say we can get this error code on any command.  What happens if we
> get this error for something like a Configure Endpoint command while the
> USB core is trying to set a new alternate interface setting.  The call
> to usb_hcd_alloc_bandwidth() is going to fail, and the device driver
> will just assume the set interface command failed.  But it can still try
> to talk to the control endpoint, which suddenly will start failing.
> 
> Meanwhile, the USB core thinks the device still exists, but it's
> basically dead to the xHCI driver.  Plus, if there's URBs in flight when
> we receive this command completion code, the xHCI driver is going to try
> to free the endpoint rings when the disable slot command finishes.  That
> seems very bad.
> 
> Maybe it would be better to just return -ENODEV in this case and let the
> USB core disable the device?

That sounds right, except that URBs with low-level communication errors 
should complete with an error code of -EPROTO or -EILSEQ (there's not 
much difference between the two).

The slot will be disabled when the device is disconnected.

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