ahci-test double-maps the hba bar in the pending_callback test. Unmap it first, to keep iomaps balanced.
Cc: Michael S. Tsirkin <m...@redhat.com> Cc: Marcel Apfelbaum <marcel.apfelb...@gmail.com> Cc: Akihiko Odaki <akihiko.od...@daynix.com> Reviewed-by: Akihiko Odaki <akihiko.od...@daynix.com> Reviewed-by: Fabiano Rosas <faro...@suse.de> Signed-off-by: Nicholas Piggin <npig...@gmail.com> --- tests/qtest/libqos/ahci.h | 2 ++ tests/qtest/ahci-test.c | 4 ++++ tests/qtest/libqos/ahci.c | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/tests/qtest/libqos/ahci.h b/tests/qtest/libqos/ahci.h index a0487a1557d..f610bd32a5f 100644 --- a/tests/qtest/libqos/ahci.h +++ b/tests/qtest/libqos/ahci.h @@ -574,7 +574,9 @@ void ahci_clean_mem(AHCIQState *ahci); QPCIDevice *get_ahci_device(QTestState *qts, uint32_t *fingerprint); void free_ahci_device(QPCIDevice *dev); void ahci_pci_enable(AHCIQState *ahci); +void ahci_pci_disable(AHCIQState *ahci); void start_ahci_device(AHCIQState *ahci); +void stop_ahci_device(AHCIQState *ahci); void ahci_hba_enable(AHCIQState *ahci); /* Port Management */ diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c index 88ac6c66ce3..7cae6b58e0c 100644 --- a/tests/qtest/ahci-test.c +++ b/tests/qtest/ahci-test.c @@ -198,6 +198,7 @@ static void ahci_shutdown(AHCIQState *ahci) { QOSState *qs = ahci->parent; + ahci_pci_disable(ahci); ahci_clean_mem(ahci); free_ahci_device(ahci->dev); g_free(ahci); @@ -1418,6 +1419,7 @@ static void test_reset(void) CMD_READ_DMA_EXT, CMD_WRITE_DMA_EXT); ahci_set(ahci, AHCI_GHC, AHCI_GHC_HR); + stop_ahci_device(ahci); ahci_clean_mem(ahci); } @@ -1484,6 +1486,7 @@ static void test_reset_pending_callback(void) sleep(1); /* Start again. */ + stop_ahci_device(ahci); ahci_clean_mem(ahci); ahci_pci_enable(ahci); ahci_hba_enable(ahci); @@ -1502,6 +1505,7 @@ static void test_reset_pending_callback(void) ahci_free(ahci, ptr1); ahci_free(ahci, ptr2); + stop_ahci_device(ahci); ahci_clean_mem(ahci); ahci_shutdown(ahci); diff --git a/tests/qtest/libqos/ahci.c b/tests/qtest/libqos/ahci.c index 34a75b7f43b..bd1994a9208 100644 --- a/tests/qtest/libqos/ahci.c +++ b/tests/qtest/libqos/ahci.c @@ -205,6 +205,11 @@ void ahci_pci_enable(AHCIQState *ahci) } +void ahci_pci_disable(AHCIQState *ahci) +{ + stop_ahci_device(ahci); +} + /** * Map BAR5/ABAR, and engage the PCI device. */ @@ -217,6 +222,12 @@ void start_ahci_device(AHCIQState *ahci) qpci_device_enable(ahci->dev); } +void stop_ahci_device(AHCIQState *ahci) +{ + /* Unmap AHCI's ABAR */ + qpci_iounmap(ahci->dev, ahci->hba_bar); +} + /** * Test and initialize the AHCI's HBA memory areas. * Initialize and start any ports with devices attached. -- 2.47.1