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
>