Message ID | 20250326075122.1299361-4-clg@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | vfio: Spring cleanup | expand |
On Wed, Mar 26, 2025 at 08:50:48AM +0100, Cédric Le Goater wrote: > 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 <kwankhede@nvidia.com> > Cc: Avihai Horon <avihaih@nvidia.com> > Signed-off-by: Cédric Le Goater <clg@redhat.com> Reviewed-by: John Levon <john.levon@nutanix.com> regards john
On Wed, 26 Mar 2025 at 13:24, Cédric Le Goater <clg@redhat.com> wrote: > 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. * Small nitpick: ...we will move OR ...will be moved > 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" > #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) > -- * Looks okay. Reviewed-by: Prasad Pandit <pjp@fedoraproject.org> Thank you. --- - Prasad
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" #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)
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 <kwankhede@nvidia.com> Cc: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> --- 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