63 lines
2.4 KiB
Diff
63 lines
2.4 KiB
Diff
|
|
From 6eab0b4a0c79d53250da601da25e2813177d44fe Mon Sep 17 00:00:00 2001
|
||
|
|
From: Joao Martins <joao.m.martins@oracle.com>
|
||
|
|
Date: Mon, 22 Jul 2024 22:13:25 +0100
|
||
|
|
Subject: [PATCH] vfio/migration: Don't block migration device dirty tracking
|
||
|
|
is unsupported
|
||
|
|
MIME-Version: 1.0
|
||
|
|
Content-Type: text/plain; charset=UTF-8
|
||
|
|
Content-Transfer-Encoding: 8bit
|
||
|
|
|
||
|
|
By default VFIO migration is set to auto, which will support live
|
||
|
|
migration if the migration capability is set *and* also dirty page
|
||
|
|
tracking is supported.
|
||
|
|
|
||
|
|
For testing purposes one can force enable without dirty page tracking
|
||
|
|
via enable-migration=on, but that option is generally left for testing
|
||
|
|
purposes.
|
||
|
|
|
||
|
|
So starting with IOMMU dirty tracking it can use to accommodate the lack of
|
||
|
|
VF dirty page tracking allowing us to minimize the VF requirements for
|
||
|
|
migration and thus enabling migration by default for those too.
|
||
|
|
|
||
|
|
While at it change the error messages to mention IOMMU dirty tracking as
|
||
|
|
well.
|
||
|
|
|
||
|
|
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
|
||
|
|
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
|
||
|
|
Reviewed-by: Eric Auger <eric.auger@redhat.com>
|
||
|
|
[ clg: - spelling in commit log ]
|
||
|
|
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||
|
|
---
|
||
|
|
hw/vfio/migration.c | 10 +++++-----
|
||
|
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
|
||
|
|
index 28d422b39f..db128204af 100644
|
||
|
|
--- a/hw/vfio/migration.c
|
||
|
|
+++ b/hw/vfio/migration.c
|
||
|
|
@@ -945,16 +945,16 @@ bool vfio_migration_realize(VFIODevice *vbasedev, Error **errp)
|
||
|
|
return !vfio_block_migration(vbasedev, err, errp);
|
||
|
|
}
|
||
|
|
|
||
|
|
- if (!vbasedev->dirty_pages_supported) {
|
||
|
|
+ if (!vbasedev->dirty_pages_supported && !vbasedev->iommu_dirty_tracking) {
|
||
|
|
if (vbasedev->enable_migration == ON_OFF_AUTO_AUTO) {
|
||
|
|
error_setg(&err,
|
||
|
|
- "%s: VFIO device doesn't support device dirty tracking",
|
||
|
|
- vbasedev->name);
|
||
|
|
+ "%s: VFIO device doesn't support device and "
|
||
|
|
+ "IOMMU dirty tracking", vbasedev->name);
|
||
|
|
goto add_blocker;
|
||
|
|
}
|
||
|
|
|
||
|
|
- warn_report("%s: VFIO device doesn't support device dirty tracking",
|
||
|
|
- vbasedev->name);
|
||
|
|
+ warn_report("%s: VFIO device doesn't support device and "
|
||
|
|
+ "IOMMU dirty tracking", vbasedev->name);
|
||
|
|
}
|
||
|
|
|
||
|
|
ret = vfio_block_multiple_devices_migration(vbasedev, errp);
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|