I finally got my hands on a DELL Optiplex 3020.  The BIOS on this
machines uses the xHCI controller to handle the keyboard and mouse.

Turns out that I badly copy/pasted the ehci(4) code to take over the
HC from the BIOS.  With the diff below I can now route all my ports
to xhci(4) and the machine no longer hang at boot.

ok?

Index: xhci_pci.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/xhci_pci.c,v
retrieving revision 1.7
diff -u -p -r1.7 xhci_pci.c
--- xhci_pci.c  2 Nov 2015 14:53:10 -0000       1.7
+++ xhci_pci.c  31 May 2016 16:36:14 -0000
@@ -258,8 +258,9 @@ xhci_pci_takecontroller(struct xhci_pci_
        eec = -1;
 
        /* Synchronise with the BIOS if it owns the controller. */
-       for (xecp = XHCI_HCC_XECP(cparams) << 2; xecp != 0;
-           xecp = XHCI_XECP_NEXT(eec) << 2) {
+       for (xecp = XHCI_HCC_XECP(cparams) << 2;
+           xecp != 0 && XHCI_XECP_NEXT(eec);
+           xecp += XHCI_XECP_NEXT(eec) << 2) {
                eec = XREAD4(&psc->sc, xecp);
                if (XHCI_XECP_ID(eec) != XHCI_ID_USB_LEGACY)
                        continue;

Reply via email to