Module Name:    src
Committed By:   msaitoh
Date:           Tue Jun 29 04:02:07 UTC 2010

Modified Files:
        src/sys/dev/usb: uhci.c

Log Message:
 Do not process the abnormality system procedure, when Run/Stop=0 and
HCHalted=1 - this is normal. Fixes a bug that system hangs at boot time
when a USB mass storage is connected via UHCI. This problem was observed
on Intel D410PT and was fixed by Katsumi Yamada.


To generate a diff of this commit:
cvs rdiff -u -r1.232 -r1.233 src/sys/dev/usb/uhci.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/uhci.c
diff -u src/sys/dev/usb/uhci.c:1.232 src/sys/dev/usb/uhci.c:1.233
--- src/sys/dev/usb/uhci.c:1.232	Wed Feb 24 22:38:09 2010
+++ src/sys/dev/usb/uhci.c	Tue Jun 29 04:02:07 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uhci.c,v 1.232 2010/02/24 22:38:09 dyoung Exp $	*/
+/*	$NetBSD: uhci.c,v 1.233 2010/06/29 04:02:07 msaitoh Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/uhci.c,v 1.33 1999/11/17 22:33:41 n_hibma Exp $	*/
 
 /*
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.232 2010/02/24 22:38:09 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.233 2010/06/29 04:02:07 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1328,7 +1328,9 @@
 		printf("%s: host controller process error\n",
 		       device_xname(sc->sc_dev));
 	}
-	if (status & UHCI_STS_HCH) {
+
+	/* When HCHalted=1 and Run/Stop=0 , it is normal */
+	if ((status & UHCI_STS_HCH) && (UREAD2(sc, UHCI_CMD) & UHCI_CMD_RS)) {
 		/* no acknowledge needed */
 		if (!sc->sc_dying) {
 			printf("%s: host controller halted\n",

Reply via email to