Re: uhci_hcd fails to off-line device/hub on error condition

Alan Stern
2009-07-12T15:16:42Z

On Sat, 11 Jul 2009, Michael S. Zick wrote:

> - - Megabytes of the same snipped - -
> uhci_hcd 0000:00:10.2: host controller process error, something bad happened!
> uhci_hcd 0000:00:10.1: host system error, PCI problems?
> uhci_hcd 0000:00:10.1: host controller process error, something bad happened!
> uhci_hcd 0000:00:10.2: host system error, PCI problems?
> uhci_hcd 0000:00:10.2: host controller process error, something bad happened!
>
> - - driver can detect unexpected behavior sufficent to post the messages - -
>
> uhci_hcd 0000:00:10.1: host system error, PCI problems?
> uhci_hcd 0000:00:10.1: host controller process error, something bad happened!
>
> - - but never does anything about it - other than bitch - -

Yep. The problem identified by those messages is supposed to be very
rare -- they mean that the PCI bus is overloaded and consequently the
USB controller wasn't able to transfer the data it needed sufficiently
rapidly. (Except in your case, where they really mean that something
is wrong with the hardware. But how can the kernel be expected to
realize this?)

The driver doesn't do anything about it because there's nothing to be
done. Bus overloads are very rare and quickly go away by themselves.
It isn't a fatal error.

Now, I suppose we could add a test for badly misbehaving hardware.
You can do it yourself: In drivers/usb/host/uhci-hcd.c, find the big
"if" statement in uhci_irq() that tests for any unexpected bits in
the "status" variable. Try printing out the value of status; if it
turns out to be 0xffff then we can detect your problem and take the
controller offline.

Alan Stern