Subject: Fix/workarond for USB ** host controller halted ** errors?
To: None <port-i386@netbsd.org>
From: None <davef1624@aol.com>
List: port-i386
Date: 10/04/2005 19:58:21
 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