[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5.1 12/13] vfio/migration: Don't block migration device dirty tr
From: |
Joao Martins |
Subject: |
[PATCH v5.1 12/13] vfio/migration: Don't block migration device dirty tracking is unsupported |
Date: |
Fri, 19 Jul 2024 23:19:46 +0100 |
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 accomodate 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>
---
Same patch as v5, but fixes builds that have CONFIG_IOMMUFD=n
Sending just this one as it doesn't justify sending the whole series
again.
---
hw/vfio/iommufd.c | 2 +-
hw/vfio/migration.c | 11 ++++++-----
include/hw/vfio/vfio-common.h | 8 ++++++++
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index 7dd5d43ce06a..a998e8578552 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -111,7 +111,7 @@ static void iommufd_cdev_unbind_and_disconnect(VFIODevice
*vbasedev)
iommufd_backend_disconnect(vbasedev->iommufd);
}
-static bool iommufd_hwpt_dirty_tracking(VFIOIOASHwpt *hwpt)
+bool iommufd_hwpt_dirty_tracking(VFIOIOASHwpt *hwpt)
{
return hwpt && hwpt->hwpt_flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING;
}
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 34d4be2ce1b1..63ffa46c9652 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -1036,16 +1036,17 @@ 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 &&
+ !iommufd_hwpt_dirty_tracking(vbasedev->hwpt)) {
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);
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 7e530c7869dc..333cabbf4362 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -299,6 +299,14 @@ int vfio_devices_query_dirty_bitmap(const
VFIOContainerBase *bcontainer,
VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
uint64_t size, ram_addr_t ram_addr, Error **errp);
+#ifdef CONFIG_IOMMUFD
+bool iommufd_hwpt_dirty_tracking(VFIOIOASHwpt *hwpt);
+#else
+static inline bool iommufd_hwpt_dirty_tracking(VFIOIOASHwpt *hwpt)
+{
+ return false;
+}
+#endif
/* Returns 0 on success, or a negative errno. */
bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
--
2.39.3
- Re: [PATCH v5 06/13] vfio/{iommufd,container}: Remove caps::aw_bits, (continued)
- [PATCH v5 09/13] vfio/iommufd: Probe and request hwpt dirty tracking capability, Joao Martins, 2024/07/19
- [PATCH v5 03/13] backends/iommufd: Extend iommufd_backend_get_device_info() to fetch HW capabilities, Joao Martins, 2024/07/19
- [PATCH v5 13/13] vfio/common: Allow disabling device dirty page tracking, Joao Martins, 2024/07/19
- [PATCH v5 05/13] vfio/iommufd: Introduce auto domain creation, Joao Martins, 2024/07/19
- Re: [PATCH v5 00/13] hw/iommufd: IOMMUFD Dirty Tracking, Joao Martins, 2024/07/19
- [PATCH v5.1 12/13] vfio/migration: Don't block migration device dirty tracking is unsupported,
Joao Martins <=
- Re: [PATCH v5 00/13] hw/iommufd: IOMMUFD Dirty Tracking, Cédric Le Goater, 2024/07/22