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