Subject: Re: Fix/workarond for USB ** host controller halted ** errors?
To: None <davef1624@aol.com>
From: Lennart Augustsson <lennart@augustsson.net>
List: tech-kern
Date: 10/05/2005 09:02:37
Try increasing the time if you suspect it's insufficient.
-- Lennart
davef1624@aol.com wrote:
> On a heavily loaded i386 (dual-Xeon) based system,
> using Intel's ICH3 I/O controller chip (which includes a 1.1 USB HC),
> I'm seeing the following uhci errors:
>
> kernel: uhci1: host controller process error
> kernel: uhci1: host controller halted
>
> This occurs after several hours of load on the system.
> Apparently, the USB host controller complains about an inconsistency
> when processing
> one of the TD's in its Frame List.
>
> Is there any workaround and/or fix for this issue?
> I don't want to reboot to solve this.
>
> In reviewing the uhci code, there could be a race-condition when
> adding/removing Queue Heads
> between the HCD and the HC;
> specifically, the T-bit needs to be set in the elink field of the QH so
> that the HC
> doesn't follow the pointer.
> However, after setting the T-bit, there is a call to
> delay(UHCI_QH_REMOVE_DELAY)
> to give the HC time to stop looking at the TD.
>
> Could this delay() be insufficient at times, depending on the platform
> in use and/or load on the system?
>
> Any help you can provide is greatly appreciated.
> thanks,
> Dave
>