Hello, Thanks to Nick, my xhci patches has been applied to nick-nhusb branch. I summarise current problems I found. Some of them are ongoing to solve, about some of them I have no idea why they happen.
------ + HS hub in 3.0 hub under 3.0 port is disconnected and reconnected every several minutes repeatedly. I don't know what is culprit yet. + Detaching hubs or devices might cause panic. Especially when the hub that hangs many devices is disconnected. + KASSERT(sc->sc_command_addr == 0) in xhci_do_command() may fail. If two or more threads run xhci_do_command(), all of them except one should be blocked at mutex_enter. But one of blocked thread can get sc_lock with sc_command_addr != 0 when cv_timedwait() unlocks sc_lock. + usbd_clear_endpoint_stall{,_async}() does not work on xhci. To clear stall condition, RESET_ENDPOINT command shall be issued priorly on xhci. Currently this is achieved by running xhci_clear_endpoint_stall_async() in xhci_handle_event() if command complete code is STALL. + xhci.c cannot handle cross-64k transfer yet. (It works anyway though.) + Aborting xfer is not implemented. + Power management is not implemented. + Isochronous transfer is not implemented. + Stream protocol is not supported. + Fresco1100 does not report CSC if the device is connected at boot. Only PortResetChange is set in change bits. uhub ignores ports without CSC bit, so cannot detect the device. + Conexant CX93010 umodem is not recognized (XACT in ADDRESS_DEVICE). It can be recognized when many debug messages are printed on console or under hubs. Thank you, -- t-hash