mbox series

[RFC,0/5] Add XHCI TR NOOP support, plus PCI, MSIX changes

Message ID 20241108154229.263097-1-npiggin@gmail.com (mailing list archive)
Headers show
Series Add XHCI TR NOOP support, plus PCI, MSIX changes | expand

Message

Nicholas Piggin Nov. 8, 2024, 3:42 p.m. UTC
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