Message ID | 4FEC7060.2010304@siemens.com |
---|---|
State | New |
Headers | show |
Hi, > What I also so in the trace is that the USB core apparently stumbled as > a request that took very long too complete finally returned, and then > the assertion triggered over this request. Can I get such a trace please? usb_host_req_* and usb_host_urb_* enabled should show all interesting information. Oh, and replacing the assert which triggers with a tracepoint (or just a fprintf in case you use the stderr tracer) would be nice, so I can see how qemu continues after the assert(). A request taking a while shouldn't be a issue. Requests for a specific endpoint shouldn't be reordered though, and this seems to happen here. thanks, Gerd
diff --git a/hw/usb/core.c b/hw/usb/core.c index 0e02da7..f4e4bbf 100644 --- a/hw/usb/core.c +++ b/hw/usb/core.c @@ -407,7 +407,6 @@ void usb_packet_complete(USBDevice *dev, USBPacket *p) int ret; usb_packet_check_state(p, USB_PACKET_ASYNC); - assert(QTAILQ_FIRST(&ep->queue) == p); usb_packet_set_state(p, USB_PACKET_COMPLETE); QTAILQ_REMOVE(&ep->queue, p, queue); dev->port->ops->complete(dev->port, p);