> diff --git a/hw/usb/core.c b/hw/usb/core.c > index 0e02da7..eacda74 100644 > --- a/hw/usb/core.c > +++ b/hw/usb/core.c > @@ -407,7 +407,9 @@ void usb_packet_complete(USBDevice *dev, USBPacket *p) > int ret; > > usb_packet_check_state(p, USB_PACKET_ASYNC); > - assert(QTAILQ_FIRST(&ep->queue) == p); > + if (QTAILQ_FIRST(&ep->queue) != p) { > + trace_usb_assert(usb_bus_from_device(dev)->busnr, dev->port->path, > p->ep->nr, p); > + }
Can you also log QTAILQ_FIRST(&ep->queue) there? usb_host_* & usb_packet_state_* tracepoints are good to have, usb_uhci_* is not needed. >From the trace it looks like the packets are completing in the same order they have been submitted as they should, I'm puzzled why the assert triggers ... Can I also get a "lsusb -v" for the usb device in question? cheers, Gerd