diff options
author | Thomas Huth | 2017-08-29 19:03:51 +0200 |
---|---|---|
committer | Thomas Huth | 2017-09-15 09:05:18 +0200 |
commit | 4446158a1a89d51d8724090aa8bd115729533e3a (patch) | |
tree | 999eaf08d9b6cf000eb59fed6780ebe080830ac2 /tests | |
parent | tests/libqtest: Use a proper error message if QTEST_QEMU_BINARY is missing (diff) | |
download | qemu-4446158a1a89d51d8724090aa8bd115729533e3a.tar.gz qemu-4446158a1a89d51d8724090aa8bd115729533e3a.tar.xz qemu-4446158a1a89d51d8724090aa8bd115729533e3a.zip |
tests: Fix broken ivshmem-server-msi/-irq tests
Broken with commit b4ba67d9a7025 ("libqos: Change PCI accessors to take
opaque BAR handle") a while ago, but nobody noticed since the tests are
not run by default: The msix_pba_bar is not correctly initialized
anymore if bir_pba has the same value as bir_table. With this fix,
"make check SPEED=slow" should work fine again.
Fixes: b4ba67d9a702507793c2724e56f98e9b0f7be02b
Tested-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/libqos/pci.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tests/libqos/pci.c b/tests/libqos/pci.c index df1f98e56a..0b73cb23d0 100644 --- a/tests/libqos/pci.c +++ b/tests/libqos/pci.c @@ -120,6 +120,8 @@ void qpci_msix_enable(QPCIDevice *dev) bir_pba = table & PCI_MSIX_FLAGS_BIRMASK; if (bir_pba != bir_table) { dev->msix_pba_bar = qpci_iomap(dev, bir_pba, NULL); + } else { + dev->msix_pba_bar = dev->msix_table_bar; } dev->msix_pba_off = table & ~PCI_MSIX_FLAGS_BIRMASK; @@ -138,8 +140,11 @@ void qpci_msix_disable(QPCIDevice *dev) qpci_config_writew(dev, addr + PCI_MSIX_FLAGS, val & ~PCI_MSIX_FLAGS_ENABLE); + if (dev->msix_pba_bar.addr != dev->msix_table_bar.addr) { + qpci_iounmap(dev, dev->msix_pba_bar); + } qpci_iounmap(dev, dev->msix_table_bar); - qpci_iounmap(dev, dev->msix_pba_bar); + dev->msix_enabled = 0; dev->msix_table_off = 0; dev->msix_pba_off = 0; |