Hi, This RFC is wide-ranging for such a simple addition of XHCI TR NOOP command, because adding qtests for it caught up some PCI/MSIX issues.
Firstly, the XHCI host shares a BAR between device registers and MSIX space, which is not handled by qtest/pci. Keeping track of BAR mappings in qtest and allowing MSIX to use an existing mapping seems to work. For XHCI qtest, I added a MSIX check to ensure interrupts are working correctly. As part of that I need to dequeue masked interrupts which seems to require PBA writes to clear them, but I could be way off base here. Adding that does cause e1000e qtest to break, because it doesn't like clear pending via PBA. The XHCI model change gets AIX's XHCI driver working, so that's another data point beyond the simple qtest for it added here. Unfortunately it is not so easy to independently test. Any guidance or input would be welcome. Thanks, Nick Nicholas Piggin (5): qtest/pci: Enforce balanced iomap/unmap qtest/libqos/pci: Fix msix_enable sharing bar0 pci/msix: Implement PBA writes qtest/xhci: Add controller and device setup and ring tests hw/usb: Support XHCI TR NOOP commands tests/qtest/libqos/ahci.h | 1 + tests/qtest/libqos/pci.h | 4 + tests/qtest/libqos/virtio-pci.h | 1 + tests/qtest/usb-hcd-xhci-test.h | 232 ++++++++++++++ hw/pci/msix.c | 16 + hw/usb/hcd-xhci.c | 28 +- tests/qtest/ahci-test.c | 2 + tests/qtest/libqos/ahci.c | 6 + tests/qtest/libqos/pci.c | 75 ++++- tests/qtest/libqos/virtio-pci.c | 6 +- tests/qtest/usb-hcd-xhci-test.c | 540 +++++++++++++++++++++++++++++++- 11 files changed, 893 insertions(+), 18 deletions(-) create mode 100644 tests/qtest/usb-hcd-xhci-test.h -- 2.45.2