From 88180e2f8008bc1af73e2dcdb8d18e8cbfc6e935 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 22 Feb 2019 17:14:23 -0500 Subject: [PATCH] XHCI: Allow commands to time out after 1s instead of stalling forever. This seems to occur when trying to stop endpoints in certain scenarios, at least. --- src/add-ons/kernel/busses/usb/xhci.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index fb8a9173be..fec831b6d9 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -2147,10 +2147,10 @@ XHCI::DoCommand(xhci_trb* trb) QueueCommand(trb); Ring(0, 0); - if (acquire_sem(fCmdCompSem) < B_OK) { - TRACE("Unable to obtain fCmdCompSem semaphore!\n"); + if (acquire_sem_etc(fCmdCompSem, 1, B_RELATIVE_TIMEOUT, 1 * 1000 * 1000) < B_OK) { + TRACE("Unable to obtain fCmdCompSem!\n"); Unlock(); - return B_ERROR; + return B_TIMED_OUT; } // eat up sems that have been released by multiple interrupts int32 semCount = 0;