From: Nicholas Piggin <[email protected]>

Migration tests can create new QPCI devices for the destination
machine which may need to take on some state of the source machine
after destination is complete.

Add a migration fixup helper and call it from ahci and nvme migration
tests.
This is currently a noop and will be used subsequently.

Reviewed-by: Akihiko Odaki <[email protected]>
Signed-off-by: Nicholas Piggin <[email protected]>
Signed-off-by: Jishnu Warrier <[email protected]>
Signed-off-by: Utkarsh Verma <[email protected]>
---
 tests/qtest/ahci-test.c  | 1 +
 tests/qtest/libqos/pci.c | 4 ++++
 tests/qtest/libqos/pci.h | 1 +
 tests/qtest/nvme-test.c  | 4 +---
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
index 043a916fdd..291f29e762 100644
--- a/tests/qtest/ahci-test.c
+++ b/tests/qtest/ahci-test.c
@@ -137,6 +137,7 @@ static void ahci_migrate(AHCIQState *from, AHCIQState *to, 
const char *uri)
     memcpy(to, from, sizeof(AHCIQState));
     to->parent = tmp;
     to->dev = dev;
+    qpci_migrate_fixup(to->dev, from->dev);
 
     tmp = from->parent;
     dev = from->dev;
diff --git a/tests/qtest/libqos/pci.c b/tests/qtest/libqos/pci.c
index e9233c81e9..e78dd4d4c7 100644
--- a/tests/qtest/libqos/pci.c
+++ b/tests/qtest/libqos/pci.c
@@ -625,6 +625,10 @@ QPCIBar qpci_legacy_iomap(QPCIDevice *dev, uint16_t addr)
     return bar;
 }
 
+void qpci_migrate_fixup(QPCIDevice *to, QPCIDevice *from)
+{
+}
+
 void add_qpci_address(QOSGraphEdgeOptions *opts, QPCIAddress *addr)
 {
     g_assert(addr);
diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h
index c3a0f85fef..cfb7c17dd3 100644
--- a/tests/qtest/libqos/pci.h
+++ b/tests/qtest/libqos/pci.h
@@ -120,6 +120,7 @@ void qpci_memwrite(QPCIDevice *bus, QPCIBar token, uint64_t 
off,
                    const void *buf, size_t len);
 QPCIBar qpci_iomap(QPCIDevice *dev, int barno, uint64_t *sizeptr);
 void qpci_iounmap(QPCIDevice *dev, QPCIBar addr);
+void qpci_migrate_fixup(QPCIDevice *to, QPCIDevice *from);
 QPCIBar qpci_legacy_iomap(QPCIDevice *dev, uint16_t addr);
 
 void qpci_unplug_acpi_device_test(QTestState *qs, const char *id, uint8_t 
slot);
diff --git a/tests/qtest/nvme-test.c b/tests/qtest/nvme-test.c
index 09972b50ff..dfa59cfbce 100644
--- a/tests/qtest/nvme-test.c
+++ b/tests/qtest/nvme-test.c
@@ -517,8 +517,6 @@ static void test_migrate(void *obj, void *data, 
QGuestAllocator *alloc)
     test_migrate_setup_nvme_ctrl(ctrl);
     test_migrate_send_nvme_reqs(ctrl, test_reqs, ARRAY_SIZE(test_reqs));
 
-    qpci_iounmap(ctrl->pdev, ctrl->bar);
-
     dest_cmdline = g_string_new(qos_get_current_command_line());
     g_string_append_printf(dest_cmdline, " -incoming %s", uri);
 
@@ -528,8 +526,8 @@ static void test_migrate(void *obj, void *data, 
QGuestAllocator *alloc)
     /* Get access to PCI device from destination VM */
     nvme = qos_allocate_objects(to, &ctrl->alloc);
     pdev = &nvme->dev;
+    qpci_migrate_fixup(pdev, ctrl->pdev);
     ctrl->pdev = pdev;
-    ctrl->bar = qpci_iomap(ctrl->pdev, 0, NULL);
     g_assert(pdev->bus->qts == to);
 
     /* Migrate VM */
-- 
2.55.0


Reply via email to