Index: uspace/drv/bus/usb/xhci/endpoint.c
===================================================================
--- uspace/drv/bus/usb/xhci/endpoint.c	(revision 831aa4662588ca87829e9696a552444604b9a056)
+++ uspace/drv/bus/usb/xhci/endpoint.c	(revision 1c9ae081d3be419212f0b575c110ed14002ff5f8)
@@ -103,6 +103,11 @@
 	    ep->transfer_type != USB_TRANSFER_INTERRUPT) {
 
-		if (xhci_ep->interval > 0)
-			xhci_ep->interval = 1 << (xhci_ep->interval - 1);
+		// XXX: According to the spec, the interval should be
+		//      from [1, 16]. However, in QEMU, we get 0 here
+		//      (a QEMU bug?).
+		if (xhci_ep->interval == 0)
+			xhci_ep->interval = 8;
+
+		xhci_ep->interval = 1 << (xhci_ep->interval - 1);
 	}
 
