On Tue, Aug 18, 2026 at 12:25:30AM +0530, Jishnu Warrier wrote: > To: [email protected] > Cc: Nicholas Piggin <[email protected]> > Cc: Philippe Mathieu-Daudé <[email protected]> > Cc: Fabiano Rosas <[email protected]> > Cc: Akihiko Odaki <[email protected]> > Cc: Michael S. Tsirkin <[email protected]> > Cc: Marcel Apfelbaum <[email protected]> > Cc: David Gibson <[email protected]> > Cc: Aditya Gupta <[email protected]> > Cc: Harsh Prateek Bora <[email protected]> > Cc: Amit Machhiwal <[email protected]> > > This series fixes a number of issues in the pci and MSI-X qtest > infrastructure, and adds new functionality. > > Nicholas Piggin is the original author of all patches in this series. > This submission takes his v5 posting forward, with the additional > changes described below. > > It was originally posted as v5 in May 2025 but was not merged.
Decided to dig this out and tried applying. Breaks nvme in CI: https://gitlab.com/mstredhat/qemu/-/jobs/17536598571 If you can try rebasing, would be appreciated. > Changes since v5 > (https://lore.kernel.org/qemu-devel/[email protected]/): > > - Use sizeof(data) instead of literal 4 in qtest_memread/qtest_memset > calls inside qpci_msix_test_interrupt() [Akihiko Odaki] > > - Fix MSI-X capitalisation in the qpci_msix_test_interrupt() doc > comment (was "msix", now "MSI-X" throughout) [Akihiko Odaki] > > - Replace the per-device boolean flags (pci_enabled in AHCIQState, > enabled in QVirtioPCIDevice) with a bool mapped field on QPCIBar > itself. qpci_iounmap() is now a graceful no-op when called on a > bar that was never mapped, removing the need for guards in callers. > [Akihiko Odaki] > > - Remove missed qpci_check_buggy_msi() guard in nvme-test.c > > - Fix off-by-one bound check: use barno < QPCI_NUM_REGIONS instead of > barno <= QPCI_NUM_REGIONS in qpci_bar_reg() and qpci_iomap(); the > previous condition allowed barno == 6 which is one past the end of > the 6-element array [Amit Machhiwal] > > - Remove redundant memset(&dev->bars_mapped[i], ...) in qpci_iounmap() > that immediately followed dev->bars_mapped[i] = false [Amit Machhiwal] > > - Add explanatory comment before the msix_addr/msix_data != 0 > assertions in qpci_msix_test_interrupt() clarifying that 0 is a > libqos-internal sentinel value [Amit Machhiwal] > > - Remove always-true g_assert_cmpint(entry, >=, 0) assertions on > uint16_t parameters in qpci_msix_set_entry(), qpci_msix_pending(), > qpci_msix_masked(), and qpci_msix_set_masked() [Amit Machhiwal] > > Nicholas Piggin (10): > tests/qtest: Enforce zero for the "un-fired" MSI-X message value > tests/qtest: Fix virtio MSI-X message endianness > tests/qtest: Add libqos function for testing MSI-X interrupt status > tests/qtest: Enable spapr dma with linear iommu map > tests/qtest/ahci: unmap pci bar before reusing device > tests/qtest/ahci: don't unmap pci bar if it wasn't mapped > tests/qtest/libquos/pci: Add migration fixup helper for pci devices > qtest/libqos/pci: Enforce balanced iomap/unmap > qtest/libqos/pci: Fix qpci_msix_enable sharing bar0 > qtest/libqos/pci: Factor MSI-X entry helpers into pci common code > > hw/ppc/spapr_iommu.c | 10 +- > tests/qtest/ahci-test.c | 8 + > tests/qtest/e1000e-test.c | 21 --- > tests/qtest/igb-test.c | 21 --- > tests/qtest/libqos/ahci.c | 12 ++ > tests/qtest/libqos/ahci.h | 2 + > tests/qtest/libqos/generic-pcihost.c | 1 - > tests/qtest/libqos/pci-pc.c | 3 - > tests/qtest/libqos/pci-spapr.c | 7 +- > tests/qtest/libqos/pci.c | 215 ++++++++++++++++++++++--- > tests/qtest/libqos/pci.h | 21 ++- > tests/qtest/libqos/virtio-pci-modern.c | 30 +--- > tests/qtest/libqos/virtio-pci.c | 86 ++-------- > tests/qtest/nvme-test.c | 4 - > tests/qtest/vhost-user-blk-test.c | 6 - > tests/qtest/virtio-blk-test.c | 12 -- > 16 files changed, 262 insertions(+), 197 deletions(-) > > -- > 2.55.0
