On Thu, 19 Oct 2017, Mathias Nyman wrote:

> Current shutdown routine just forces the host controller to stop, it clears 
> the
> run bit and polls the "halted" status for 16ms. Apparently we don't see the 
> halted
> bit within 16ms.
> 
> Spec say that the correct way to stop is to first command all transfer rings 
> to stop,
> then stop the command ring, and after that stop the host controller.
> 
> If we just bluntly stop the host (as we do) spec say (xhci 5.4.1.1) it should 
> stop
> anyway within 16ms, but undefined behavior may occur.
> 
> So the options in xHCI are down to:
> 1. just clear the run bit and ignore checking any status.
>     - really fast shutdown routine for xhci
> 2. clear run bit and increase status polling time, see if we get rid of error 
> message.
>     - can get rid of error message but no actual change, well, we would know 
> if host stopped
> 3. properly stop all transfer rings and command ring, and then stop host.
>     - cleanest and slowest way, do we care about this? everything should be 
> reset after shutdown.

Or you could use a sledgehammer approach, and do a hardware reset of
the controller chip.

Alan Stern

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

Reply via email to