On 26.02.2025 18:22, Cédric Le Goater wrote:
On 2/26/25 11:14, Cédric Le Goater wrote:
On 2/19/25 21:34, Maciej S. Szmigiero wrote:
From: "Maciej S. Szmigiero" <maciej.szmigi...@oracle.com>
Add support for VFIOMultifd data structure that will contain most of the
receive-side data together with its init/cleanup methods.
Signed-off-by: Maciej S. Szmigiero <maciej.szmigi...@oracle.com>
---
hw/vfio/migration-multifd.c | 33 +++++++++++++++++++++++++++++++++
hw/vfio/migration-multifd.h | 8 ++++++++
hw/vfio/migration.c | 29 +++++++++++++++++++++++++++--
include/hw/vfio/vfio-common.h | 3 +++
4 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/hw/vfio/migration-multifd.c b/hw/vfio/migration-multifd.c
index 7328ad8e925c..c2defc0efef0 100644
--- a/hw/vfio/migration-multifd.c
+++ b/hw/vfio/migration-multifd.c
@@ -41,6 +41,9 @@ typedef struct VFIOStateBuffer {
size_t len;
} VFIOStateBuffer;
+typedef struct VFIOMultifd {
+} VFIOMultifd;
+
static void vfio_state_buffer_clear(gpointer data)
{
VFIOStateBuffer *lb = data;
@@ -84,8 +87,38 @@ static VFIOStateBuffer
*vfio_state_buffers_at(VFIOStateBuffers *bufs, guint idx)
return &g_array_index(bufs->array, VFIOStateBuffer, idx);
}
+VFIOMultifd *vfio_multifd_new(void)
+{
+ VFIOMultifd *multifd = g_new(VFIOMultifd, 1);
+
+ return multifd;
+}
+
+void vfio_multifd_free(VFIOMultifd *multifd)
+{
+ g_free(multifd);
+}
+
bool vfio_multifd_transfer_supported(void)
{
return multifd_device_state_supported() &&
migrate_send_switchover_start();
}
+
+bool vfio_multifd_transfer_enabled(VFIODevice *vbasedev)
+{
+ return false;
+}
+
+bool vfio_multifd_transfer_setup(VFIODevice *vbasedev, Error **errp)
+{
+ if (vfio_multifd_transfer_enabled(vbasedev) &&
+ !vfio_multifd_transfer_supported()) {
+ error_setg(errp,
+ "%s: Multifd device transfer requested but unsupported in the
current config",
+ vbasedev->name);
+ return false;
+ }
This check on the consistency of the settings confused me a little. Even if
simple, I would have put it in a separate patch for better understanding.
The rest looks good.
now that I have reached patch 31 I understand better. I would put the
check above in patch 31 and simply return true for now.
Moved it to that patch then ("Add x-migration-multifd-transfer VFIO property").
Thanks,
C.
Thanks,
Maciej