Two xHCI bugs from the issue tracker, each with a qtest. The interval mask is 32 bits wide, so once MFINDEX passes 2^32 isoch TDs with SIA are no longer held until the next interval boundary. This matches #3973: onset after 6.2 days of uptime, cleared by re-binding the controller in the guest.
A guest can declare a non-isoch endpoint as isoch and hit an assertion when the device NAKs (#3886). #544 is the same assertion, reached from the kick timer as in patch 4. Its reproducer from 2021 no longer triggers on master, so it is not tagged. Both tests fail on master (c1c18d1e64). Tested on x86_64 with an ASan/UBSan build: usb-hcd-xhci-test, usb-hcd-ehci-test and usb-hcd-uhci-test pass. The new tests skip on ppc64. Junjie Cao (4): hw/usb/hcd-xhci: fix interval alignment after MFINDEX passes 2^32 hw/usb/hcd-xhci: don't assert on NAK when retrying an isoch transfer tests/qtest/usb-hcd-xhci: test isoch pacing with MFINDEX above 2^32 tests/qtest/usb-hcd-xhci: test isoch endpoint type mismatch hw/usb/hcd-xhci.c | 33 +--- tests/qtest/usb-hcd-xhci-test.c | 318 ++++++++++++++++++++++++++++++++ 2 files changed, 328 insertions(+), 23 deletions(-) base-commit: c1c18d1e640b64292859ce9f30f3c344edfb0294 -- 2.43.0
