On 07/21/13 21:06, Alexandre Kovalenko wrote:

Number:         180726
Category:       usb
Synopsis:       XHCI umass support breaks between r248085 and r252560 on 
9-STABLE
Confidential:   no
Severity:       non-critical
Priority:       low
Responsible:    freebsd-usb
State:          open
Quarter:
Keywords:
Date-Required:
Class:          sw-bug
Submitter-Id:   current-users
Arrival-Date:   Sun Jul 21 19:10:00 UTC 2013
Closed-Date:
Last-Modified:
Originator:     Alexandre Kovalenko
Release:        9-STABLE
Organization:
Environment:
FreeBSD twinhead 9.2-BETA1 FreeBSD 9.2-BETA1 #11 r248085:253503: Sun Jul 21 
14:29:42 EDT 2013     root@twinhead:/usr/obj/usr/src/sys/TWINHEAD  amd64
Description:

  Three different external hard drives (Seagate, Western Digital and noname USB 
3.0 enclosure) refused to be recognized as the umass devices. Reverting 
/usr/src/sys/dev/bsd/controller to r248085, building and loading just xhci 
module makes drives appear again. Below are snippets from the log in both cases:


Can you try:

1) Attached patch.

2) Non ASMedia USB 3.0 controller

--HPS
        
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index e6d5865..7070ef7 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -1654,7 +1654,7 @@ restart:
 			/* fill out buffer pointers */
 
 			if (average == 0) {
-				npkt = 0;
+				npkt = 1;
 				memset(&buf_res, 0, sizeof(buf_res));
 			} else {
 				usbd_get_page(temp->pc, temp->offset +
@@ -1691,9 +1691,7 @@ restart:
 
 			switch (temp->trb_type) {
 			case XHCI_TRB_TYPE_ISOCH:
-				/* BEI: Interrupts are inhibited until EOT */
 				dword = XHCI_TRB_3_CHAIN_BIT | XHCI_TRB_3_CYCLE_BIT |
-				    XHCI_TRB_3_BEI_BIT |
 				    XHCI_TRB_3_TBC_SET(temp->tbc) |
 				    XHCI_TRB_3_TLBPC_SET(temp->tlbpc);
 				if (td != td_first) {
@@ -1728,10 +1726,8 @@ restart:
 					dword |= XHCI_TRB_3_DIR_IN;
 				break;
 			default:	/* XHCI_TRB_TYPE_NORMAL */
-				/* BEI: Interrupts are inhibited until EOT */
 				dword = XHCI_TRB_3_CHAIN_BIT | XHCI_TRB_3_CYCLE_BIT |
 				    XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_NORMAL) |
-				    XHCI_TRB_3_BEI_BIT |
 				    XHCI_TRB_3_TBC_SET(temp->tbc) |
 				    XHCI_TRB_3_TLBPC_SET(temp->tlbpc);
 				if (temp->direction == UE_DIR_IN)
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to