Call yield() while waiting for USB control transfers to complete.
diff --git a/src/usb-ohci.c b/src/usb-ohci.c
index 15841dc..b62090f 100644
--- a/src/usb-ohci.c
+++ b/src/usb-ohci.c
@@ -185,7 +185,7 @@
             dprintf(1, "Timeout on wait_ed %p\n", ed);
             return -1;
         }
-        cpu_relax();
+        yield();
     }
 }
 
diff --git a/src/usb-uhci.c b/src/usb-uhci.c
index cc01234..64531a9 100644
--- a/src/usb-uhci.c
+++ b/src/usb-uhci.c
@@ -166,7 +166,7 @@
                     , inw(cntl->uhci.iobase + USBSTS));
             return -1;
         }
-        cpu_relax();
+        yield();
     }
 }