Hi, looking at this code: /* ring command ring doorbell to restart the command ring */ if ((xhci->cmd_ring->dequeue != xhci->cmd_ring->enqueue) && !(xhci->xhc_state & XHCI_STATE_DYING)) { xhci->current_cmd = cur_cmd; xhci_mod_cmd_timer(xhci, XHCI_CMD_DEFAULT_TIMEOUT); xhci_ring_cmd_db(xhci); } Something looks fishy to me. The timer is started before the door bell is rung. I cannot see how you can guarantee the timeout given that order. Should it be reversed? Regards Oliver