[PATCH for-10.1 v2 21/37] vfio: Introduce new files for CPR definitions and declarations

Cédric Le Goater posted 37 patches 1 week ago
[PATCH for-10.1 v2 21/37] vfio: Introduce new files for CPR definitions and declarations
Posted by Cédric Le Goater 1 week ago
Gather all CPR related declarations into "vfio-cpr.h" to reduce exposure
of VFIO internals in "hw/vfio/vfio-common.h". These were introduced in
commit d9fa4223b30a ("vfio: register container for cpr").

Order file list in meson.build while at it.

Cc: Steve Sistare <steven.sistare@oracle.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
 hw/vfio/vfio-cpr.h            | 15 +++++++++++++++
 include/hw/vfio/vfio-common.h |  3 ---
 hw/vfio/container.c           |  1 +
 hw/vfio/cpr.c                 |  1 +
 hw/vfio/iommufd.c             |  1 +
 hw/vfio/meson.build           |  2 +-
 6 files changed, 19 insertions(+), 4 deletions(-)
 create mode 100644 hw/vfio/vfio-cpr.h

diff --git a/hw/vfio/vfio-cpr.h b/hw/vfio/vfio-cpr.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e78b422623683509929f2982f0be465306f4e99
--- /dev/null
+++ b/hw/vfio/vfio-cpr.h
@@ -0,0 +1,15 @@
+/*
+ * VFIO CPR
+ *
+ * Copyright Red Hat, Inc. 2025
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HW_VFIO_CPR_H
+#define HW_VFIO_CPR_H
+
+bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
+void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
+
+#endif /* HW_VFIO_CPR_H */
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 75c48ebf5c21ea93aa8ac4c3aecc63172b633f0e..c587ed08feabd0c4845d824960dd0799e9ace69b 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -129,9 +129,6 @@ bool vfio_attach_device(char *name, VFIODevice *vbasedev,
 void vfio_detach_device(VFIODevice *vbasedev);
 VFIODevice *vfio_get_vfio_device(Object *obj);
 
-bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
-void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
-
 typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
 extern VFIODeviceList vfio_device_list;
 extern const MemoryListener vfio_memory_listener;
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index 6e9378434377f4b03176a16157c337ab1286c53e..7436388a73a424b11e6bad9ce80b86c3792242dd 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -34,6 +34,7 @@
 #include "pci.h"
 #include "hw/vfio/vfio-container.h"
 #include "vfio-helpers.h"
+#include "vfio-cpr.h"
 
 #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
 
diff --git a/hw/vfio/cpr.c b/hw/vfio/cpr.c
index 3d1c8d290a5e6b6d67e244931a9ef8c194a0b574..696987006b853227e76caedb3c7f4e4be31cfa06 100644
--- a/hw/vfio/cpr.c
+++ b/hw/vfio/cpr.c
@@ -10,6 +10,7 @@
 #include "migration/misc.h"
 #include "qapi/error.h"
 #include "system/runstate.h"
+#include "vfio-cpr.h"
 
 static int vfio_cpr_reboot_notifier(NotifierWithReturn *notifier,
                                     MigrationEvent *e, Error **errp)
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index 85b5a8146ac401af6be8109c28ea4c7a39e84521..a5bd189a86d70bd11ecb80384ac145a51979322b 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -27,6 +27,7 @@
 #include "pci.h"
 #include "vfio-iommufd.h"
 #include "vfio-helpers.h"
+#include "vfio-cpr.h"
 
 #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO             \
             TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
index 60caa366175edee6bc69c0febebaef84e752e346..1f89bd28c13dea55bcfff476ce99d51b453d8533 100644
--- a/hw/vfio/meson.build
+++ b/hw/vfio/meson.build
@@ -20,10 +20,10 @@ system_ss.add(when: 'CONFIG_VFIO_XGMAC', if_true: files('calxeda-xgmac.c'))
 system_ss.add(when: 'CONFIG_VFIO_AMD_XGBE', if_true: files('amd-xgbe.c'))
 system_ss.add(when: 'CONFIG_VFIO', if_true: files(
   'container-base.c',
+  'cpr.c',
   'device.c',
   'migration.c',
   'migration-multifd.c',
-  'cpr.c',
   'region.c',
 ))
 system_ss.add(when: ['CONFIG_VFIO', 'CONFIG_IOMMUFD'], if_true: files(
-- 
2.49.0


Re: [PATCH for-10.1 v2 21/37] vfio: Introduce new files for CPR definitions and declarations
Posted by Steven Sistare 6 days, 23 hours ago
On 3/26/2025 3:51 AM, Cédric Le Goater wrote:
> Gather all CPR related declarations into "vfio-cpr.h" to reduce exposure
> of VFIO internals in "hw/vfio/vfio-common.h". These were introduced in
> commit d9fa4223b30a ("vfio: register container for cpr").
> 
> Order file list in meson.build while at it.
> 
> Cc: Steve Sistare <steven.sistare@oracle.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
>   hw/vfio/vfio-cpr.h            | 15 +++++++++++++++
>   include/hw/vfio/vfio-common.h |  3 ---
>   hw/vfio/container.c           |  1 +
>   hw/vfio/cpr.c                 |  1 +
>   hw/vfio/iommufd.c             |  1 +
>   hw/vfio/meson.build           |  2 +-
>   6 files changed, 19 insertions(+), 4 deletions(-)
>   create mode 100644 hw/vfio/vfio-cpr.h
> 
> diff --git a/hw/vfio/vfio-cpr.h b/hw/vfio/vfio-cpr.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..9e78b422623683509929f2982f0be465306f4e99
> --- /dev/null
> +++ b/hw/vfio/vfio-cpr.h
> @@ -0,0 +1,15 @@
> +/*
> + * VFIO CPR
> + *
> + * Copyright Red Hat, Inc. 2025

This, please:
   Copyright (c) 2025 Oracle and/or its affiliates.

I created the copied code, and I created this file vfio-cpr.h in my vfio cpr series.
Other than that:
   Reviewed-by: Steve Sistare <steven.sistare@oracle.com>

- Steve

> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef HW_VFIO_CPR_H
> +#define HW_VFIO_CPR_H
> +
> +bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
> +void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
> +
> +#endif /* HW_VFIO_CPR_H */
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 75c48ebf5c21ea93aa8ac4c3aecc63172b633f0e..c587ed08feabd0c4845d824960dd0799e9ace69b 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -129,9 +129,6 @@ bool vfio_attach_device(char *name, VFIODevice *vbasedev,
>   void vfio_detach_device(VFIODevice *vbasedev);
>   VFIODevice *vfio_get_vfio_device(Object *obj);
>   
> -bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
> -void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
> -
>   typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
>   extern VFIODeviceList vfio_device_list;
>   extern const MemoryListener vfio_memory_listener;
> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
> index 6e9378434377f4b03176a16157c337ab1286c53e..7436388a73a424b11e6bad9ce80b86c3792242dd 100644
> --- a/hw/vfio/container.c
> +++ b/hw/vfio/container.c
> @@ -34,6 +34,7 @@
>   #include "pci.h"
>   #include "hw/vfio/vfio-container.h"
>   #include "vfio-helpers.h"
> +#include "vfio-cpr.h"
>   
>   #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>   
> diff --git a/hw/vfio/cpr.c b/hw/vfio/cpr.c
> index 3d1c8d290a5e6b6d67e244931a9ef8c194a0b574..696987006b853227e76caedb3c7f4e4be31cfa06 100644
> --- a/hw/vfio/cpr.c
> +++ b/hw/vfio/cpr.c
> @@ -10,6 +10,7 @@
>   #include "migration/misc.h"
>   #include "qapi/error.h"
>   #include "system/runstate.h"
> +#include "vfio-cpr.h"
>   
>   static int vfio_cpr_reboot_notifier(NotifierWithReturn *notifier,
>                                       MigrationEvent *e, Error **errp)
> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
> index 85b5a8146ac401af6be8109c28ea4c7a39e84521..a5bd189a86d70bd11ecb80384ac145a51979322b 100644
> --- a/hw/vfio/iommufd.c
> +++ b/hw/vfio/iommufd.c
> @@ -27,6 +27,7 @@
>   #include "pci.h"
>   #include "vfio-iommufd.h"
>   #include "vfio-helpers.h"
> +#include "vfio-cpr.h"
>   
>   #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO             \
>               TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
> diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
> index 60caa366175edee6bc69c0febebaef84e752e346..1f89bd28c13dea55bcfff476ce99d51b453d8533 100644
> --- a/hw/vfio/meson.build
> +++ b/hw/vfio/meson.build
> @@ -20,10 +20,10 @@ system_ss.add(when: 'CONFIG_VFIO_XGMAC', if_true: files('calxeda-xgmac.c'))
>   system_ss.add(when: 'CONFIG_VFIO_AMD_XGBE', if_true: files('amd-xgbe.c'))
>   system_ss.add(when: 'CONFIG_VFIO', if_true: files(
>     'container-base.c',
> +  'cpr.c',
>     'device.c',
>     'migration.c',
>     'migration-multifd.c',
> -  'cpr.c',
>     'region.c',
>   ))
>   system_ss.add(when: ['CONFIG_VFIO', 'CONFIG_IOMMUFD'], if_true: files(


Re: [PATCH for-10.1 v2 21/37] vfio: Introduce new files for CPR definitions and declarations
Posted by Cédric Le Goater 6 days, 21 hours ago
On 3/26/25 15:38, Steven Sistare wrote:
> On 3/26/2025 3:51 AM, Cédric Le Goater wrote:
>> Gather all CPR related declarations into "vfio-cpr.h" to reduce exposure
>> of VFIO internals in "hw/vfio/vfio-common.h". These were introduced in
>> commit d9fa4223b30a ("vfio: register container for cpr").
>>
>> Order file list in meson.build while at it.
>>
>> Cc: Steve Sistare <steven.sistare@oracle.com>
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> ---
>>   hw/vfio/vfio-cpr.h            | 15 +++++++++++++++
>>   include/hw/vfio/vfio-common.h |  3 ---
>>   hw/vfio/container.c           |  1 +
>>   hw/vfio/cpr.c                 |  1 +
>>   hw/vfio/iommufd.c             |  1 +
>>   hw/vfio/meson.build           |  2 +-
>>   6 files changed, 19 insertions(+), 4 deletions(-)
>>   create mode 100644 hw/vfio/vfio-cpr.h
>>
>> diff --git a/hw/vfio/vfio-cpr.h b/hw/vfio/vfio-cpr.h
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..9e78b422623683509929f2982f0be465306f4e99
>> --- /dev/null
>> +++ b/hw/vfio/vfio-cpr.h
>> @@ -0,0 +1,15 @@
>> +/*
>> + * VFIO CPR
>> + *
>> + * Copyright Red Hat, Inc. 2025
> 
> This, please:
>    Copyright (c) 2025 Oracle and/or its affiliates.
> 
> I created the copied code, and I created this file vfio-cpr.h in my vfio cpr series.

Yes. Will replace the copyright notice.

> Other than that:
>    Reviewed-by: Steve Sistare <steven.sistare@oracle.com>

Thanks,

C.


> 
> - Steve
> 
>> + *
>> + * SPDX-License-Identifier: GPL-2.0-or-later
>> + */
>> +
>> +#ifndef HW_VFIO_CPR_H
>> +#define HW_VFIO_CPR_H
>> +
>> +bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
>> +void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
>> +
>> +#endif /* HW_VFIO_CPR_H */
>> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>> index 75c48ebf5c21ea93aa8ac4c3aecc63172b633f0e..c587ed08feabd0c4845d824960dd0799e9ace69b 100644
>> --- a/include/hw/vfio/vfio-common.h
>> +++ b/include/hw/vfio/vfio-common.h
>> @@ -129,9 +129,6 @@ bool vfio_attach_device(char *name, VFIODevice *vbasedev,
>>   void vfio_detach_device(VFIODevice *vbasedev);
>>   VFIODevice *vfio_get_vfio_device(Object *obj);
>> -bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp);
>> -void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer);
>> -
>>   typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
>>   extern VFIODeviceList vfio_device_list;
>>   extern const MemoryListener vfio_memory_listener;
>> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
>> index 6e9378434377f4b03176a16157c337ab1286c53e..7436388a73a424b11e6bad9ce80b86c3792242dd 100644
>> --- a/hw/vfio/container.c
>> +++ b/hw/vfio/container.c
>> @@ -34,6 +34,7 @@
>>   #include "pci.h"
>>   #include "hw/vfio/vfio-container.h"
>>   #include "vfio-helpers.h"
>> +#include "vfio-cpr.h"
>>   #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>> diff --git a/hw/vfio/cpr.c b/hw/vfio/cpr.c
>> index 3d1c8d290a5e6b6d67e244931a9ef8c194a0b574..696987006b853227e76caedb3c7f4e4be31cfa06 100644
>> --- a/hw/vfio/cpr.c
>> +++ b/hw/vfio/cpr.c
>> @@ -10,6 +10,7 @@
>>   #include "migration/misc.h"
>>   #include "qapi/error.h"
>>   #include "system/runstate.h"
>> +#include "vfio-cpr.h"
>>   static int vfio_cpr_reboot_notifier(NotifierWithReturn *notifier,
>>                                       MigrationEvent *e, Error **errp)
>> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
>> index 85b5a8146ac401af6be8109c28ea4c7a39e84521..a5bd189a86d70bd11ecb80384ac145a51979322b 100644
>> --- a/hw/vfio/iommufd.c
>> +++ b/hw/vfio/iommufd.c
>> @@ -27,6 +27,7 @@
>>   #include "pci.h"
>>   #include "vfio-iommufd.h"
>>   #include "vfio-helpers.h"
>> +#include "vfio-cpr.h"
>>   #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO             \
>>               TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
>> diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
>> index 60caa366175edee6bc69c0febebaef84e752e346..1f89bd28c13dea55bcfff476ce99d51b453d8533 100644
>> --- a/hw/vfio/meson.build
>> +++ b/hw/vfio/meson.build
>> @@ -20,10 +20,10 @@ system_ss.add(when: 'CONFIG_VFIO_XGMAC', if_true: files('calxeda-xgmac.c'))
>>   system_ss.add(when: 'CONFIG_VFIO_AMD_XGBE', if_true: files('amd-xgbe.c'))
>>   system_ss.add(when: 'CONFIG_VFIO', if_true: files(
>>     'container-base.c',
>> +  'cpr.c',
>>     'device.c',
>>     'migration.c',
>>     'migration-multifd.c',
>> -  'cpr.c',
>>     'region.c',
>>   ))
>>   system_ss.add(when: ['CONFIG_VFIO', 'CONFIG_IOMMUFD'], if_true: files(
>