On 3/31/25 14:07, Avihai Horon wrote:

On 26/03/2025 9:50, Cédric Le Goater wrote:
External email: Use caution opening links or attachments


The migration core subsystem makes use of the VFIO migration API to
collect statistics on the number of bytes transferred. These services
are declared in "hw/vfio/vfio-common.h" which also contains VFIO
internal declarations. Move the migration declarations into a new
header file "hw/vfio/vfio-migration.h" to reduce the exposure of VFIO
internals.

While at it, use a 'vfio_migration_' prefix for these services.

To be noted, vfio_migration_add_bytes_transferred() is a VFIO
migration internal service which we will moved in the subsequent
patches.

Cc: Kirti Wankhede <kwankh...@nvidia.com>
Cc: Avihai Horon <avih...@nvidia.com>
Signed-off-by: Cédric Le Goater <c...@redhat.com>

Reviewed-by: Avihai Horon <avih...@nvidia.com>

Since lore didn't receive the email :

Reviewed-by: Avihai Horon <avih...@nvidia.com>

Small nit below.

---
  include/hw/vfio/vfio-common.h    |  5 +----
  include/hw/vfio/vfio-migration.h | 16 ++++++++++++++++
  hw/vfio/migration-multifd.c      |  5 +++--
  hw/vfio/migration.c              | 11 ++++++-----
  migration/target.c               |  8 ++++----
  5 files changed, 30 insertions(+), 15 deletions(-)
  create mode 100644 include/hw/vfio/vfio-migration.h

diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 
9cfb3fb6931e71395ef1d67b0a743d8bc1433fdc..fd424a4a3d40132e940f457f9250458e50ea0b71
 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -290,13 +290,10 @@ extern VFIODeviceList vfio_device_list;
  extern const MemoryListener vfio_memory_listener;
  extern int vfio_kvm_device_fd;

-bool vfio_mig_active(void);
  int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp);
  void vfio_unblock_multiple_devices_migration(void);
  bool vfio_viommu_preset(VFIODevice *vbasedev);
-int64_t vfio_mig_bytes_transferred(void);
-void vfio_mig_reset_bytes_transferred(void);
-void vfio_mig_add_bytes_transferred(unsigned long val);
+void vfio_migration_add_bytes_transferred(unsigned long val);
  bool vfio_device_state_is_running(VFIODevice *vbasedev);
  bool vfio_device_state_is_precopy(VFIODevice *vbasedev);

diff --git a/include/hw/vfio/vfio-migration.h b/include/hw/vfio/vfio-migration.h
new file mode 100644
index 
0000000000000000000000000000000000000000..0d4ecd33d5d8c214bb77e0652b4405b6e43bcafa
--- /dev/null
+++ b/include/hw/vfio/vfio-migration.h
@@ -0,0 +1,16 @@
+/*
+ * VFIO migration interface
+ *
+ * Copyright Red Hat, Inc. 2025
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HW_VFIO_VFIO_MIGRATION_H
+#define HW_VFIO_VFIO_MIGRATION_H
+
+bool vfio_migration_active(void);
+int64_t vfio_migration_bytes_transferred(void);
+void vfio_migration_reset_bytes_transferred(void);
+
+#endif /* HW_VFIO_VFIO_MIGRATION_H */
diff --git a/hw/vfio/migration-multifd.c b/hw/vfio/migration-multifd.c
index 
378f6f3bf01f6a4155fb424f8028cb5380f27f02..09aa57f5f890f37f7e36c857fd813f55b1da2fce
 100644
--- a/hw/vfio/migration-multifd.c
+++ b/hw/vfio/migration-multifd.c
@@ -11,6 +11,7 @@

  #include "qemu/osdep.h"
  #include "hw/vfio/vfio-common.h"
+#include "hw/vfio/vfio-migration.h"

This can be dropped.

This include is needed until patch 6. Where I forgot to remove it.
Will fix,

Thanks,

C.


Thanks.

  #include "migration/misc.h"
  #include "qapi/error.h"
  #include "qemu/bswap.h"
@@ -575,7 +576,7 @@ vfio_save_complete_precopy_thread_config_state(VFIODevice 
*vbasedev,
          return false;
      }

-    vfio_mig_add_bytes_transferred(packet_len);
+    vfio_migration_add_bytes_transferred(packet_len);

      return true;
  }
@@ -645,7 +646,7 @@ 
vfio_multifd_save_complete_precopy_thread(SaveLiveCompletePrecopyThreadData *d,
              goto thread_exit;
          }

-        vfio_mig_add_bytes_transferred(packet_size);
+        vfio_migration_add_bytes_transferred(packet_size);
      }

      if (!vfio_save_complete_precopy_thread_config_state(vbasedev,
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 
8bf65b8e11094b8363692dba3084b762362c7dd6..582d65932a6c590eaecd8bf0b765f27d93896c72
 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -17,6 +17,7 @@

  #include "system/runstate.h"
  #include "hw/vfio/vfio-common.h"
+#include "hw/vfio/vfio-migration.h"
  #include "migration/misc.h"
  #include "migration/savevm.h"
  #include "migration/vmstate.h"
@@ -373,7 +374,7 @@ static ssize_t vfio_save_block(QEMUFile *f, VFIOMigration 
*migration)
      qemu_put_be64(f, VFIO_MIG_FLAG_DEV_DATA_STATE);
      qemu_put_be64(f, data_size);
      qemu_put_buffer(f, migration->data_buffer, data_size);
-    vfio_mig_add_bytes_transferred(data_size);
+    vfio_migration_add_bytes_transferred(data_size);

      trace_vfio_save_block(migration->vbasedev->name, data_size);

@@ -1047,22 +1048,22 @@ static int vfio_block_migration(VFIODevice *vbasedev, 
Error *err, Error **errp)

  /* ---------------------------------------------------------------------- */

-int64_t vfio_mig_bytes_transferred(void)
+int64_t vfio_migration_bytes_transferred(void)
  {
      return MIN(qatomic_read(&bytes_transferred), INT64_MAX);
  }

-void vfio_mig_reset_bytes_transferred(void)
+void vfio_migration_reset_bytes_transferred(void)
  {
      qatomic_set(&bytes_transferred, 0);
  }

-void vfio_mig_add_bytes_transferred(unsigned long val)
+void vfio_migration_add_bytes_transferred(unsigned long val)
  {
      qatomic_add(&bytes_transferred, val);
  }

-bool vfio_mig_active(void)
+bool vfio_migration_active(void)
  {
      VFIODevice *vbasedev;

diff --git a/migration/target.c b/migration/target.c
index 
f5d8cfe7c2a3473f4bd3f5068145598c60973c58..12fd399f0c521c5c28535b58f24feab6845947fd
 100644
--- a/migration/target.c
+++ b/migration/target.c
@@ -11,21 +11,21 @@
  #include CONFIG_DEVICES

  #ifdef CONFIG_VFIO
-#include "hw/vfio/vfio-common.h"
+#include "hw/vfio/vfio-migration.h"
  #endif

  #ifdef CONFIG_VFIO
  void migration_populate_vfio_info(MigrationInfo *info)
  {
-    if (vfio_mig_active()) {
+    if (vfio_migration_active()) {
          info->vfio = g_malloc0(sizeof(*info->vfio));
-        info->vfio->transferred = vfio_mig_bytes_transferred();
+        info->vfio->transferred = vfio_migration_bytes_transferred();
      }
  }

  void migration_reset_vfio_bytes_transferred(void)
  {
-    vfio_mig_reset_bytes_transferred();
+    vfio_migration_reset_bytes_transferred();
  }
  #else
  void migration_populate_vfio_info(MigrationInfo *info)
--
2.49.0




Reply via email to