Hello,

On 13/11/14(Thu) 15:55, inframare wrote:
> [...]
> Seem to be having a few issues with xhci on a Gigabyte Brix.
> 
> USB 2 & 3 ports not working with /bsd.rd, had to install manually from 
> /bsd booted from a full install on USB.
> 
> USB 3 unstable with /bsd, flash storage devices worked on first 
> insertion and showed good read/write speeds with dd until intermittent 
> error:
> 
> xhci_abort_xfer: xfer=0xffffff013f6b95a0 err=TIMEOUT

Thanks for the report.  I am unfortunately unable to reproduce any of
your problems, but I don't have any 1.0 controller, like yours.

Could you apply the debug diff below, compile a kernel with XHCI_DEBUG,
reproduce your manipulation and send me the corresponding dmesg? 

TIA,
Martin

Index: xhci.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/xhci.c,v
retrieving revision 1.40
diff -u -p -r1.40 xhci.c
--- xhci.c      11 Nov 2014 12:10:44 -0000      1.40
+++ xhci.c      14 Nov 2014 12:13:39 -0000
@@ -720,6 +720,11 @@ xhci_event_xfer(struct xhci_softc *sc, u
 
                /* FALLTHROUGH */
        case XHCI_CODE_BABBLE:
+#if 1
+               DPRINTF(("%s: dev %d dci=%d paddr=0x%016llx idx=%d remain=%u"
+                   " code=%u\n", DEVNAME(sc), slot, dci, (long long)paddr,
+                   trb_idx, remain, code));
+#endif
                /*
                 * Since the stack might try to start a new transfer as
                 * soon as a pending one finishes, make sure the endpoint
@@ -1566,7 +1571,7 @@ xhci_cmd_configure_ep(struct xhci_softc 
 {
        struct xhci_trb trb;
 
-       DPRINTF(("%s: %s\n", DEVNAME(sc), __func__));
+       DPRINTF(("%s: %s dev %u\n", DEVNAME(sc), __func__, slot));
 
        trb.trb_paddr = htole64(addr);
        trb.trb_status = 0;
@@ -1582,7 +1587,7 @@ xhci_cmd_stop_ep(struct xhci_softc *sc, 
 {
        struct xhci_trb trb;
 
-       DPRINTF(("%s: %s\n", DEVNAME(sc), __func__));
+       DPRINTF(("%s: %s dev %u dci %u\n", DEVNAME(sc), __func__, slot, dci));
 
        trb.trb_paddr = 0;
        trb.trb_status = 0;
@@ -1598,7 +1603,7 @@ xhci_cmd_reset_endpoint_async(struct xhc
 {
        struct xhci_trb trb;
 
-       DPRINTF(("%s: %s\n", DEVNAME(sc), __func__));
+       DPRINTF(("%s: %s dev %u dci %u\n", DEVNAME(sc), __func__, slot, dci));
 
        trb.trb_paddr = 0;
        trb.trb_status = 0;
@@ -1615,7 +1620,7 @@ xhci_cmd_set_tr_deq_async(struct xhci_so
 {
        struct xhci_trb trb;
 
-       DPRINTF(("%s: %s\n", DEVNAME(sc), __func__));
+       DPRINTF(("%s: %s dev %u dci %u\n", DEVNAME(sc), __func__, slot, dci));
 
        trb.trb_paddr = htole64(addr);
        trb.trb_status = 0;
@@ -1673,7 +1678,7 @@ xhci_cmd_evaluate_ctx(struct xhci_softc 
 {
        struct xhci_trb trb;
 
-       DPRINTF(("%s: %s\n", DEVNAME(sc), __func__));
+       DPRINTF(("%s: %s dev %u\n", DEVNAME(sc), __func__, slot));
 
        trb.trb_paddr = htole64(addr);
        trb.trb_status = 0;

Reply via email to