diff mbox series

[2/6] vfio/migration: Fail adding device with enable-migration=on and existing blocker

Message ID 20230828151842.11303-3-avihaih@nvidia.com
State New
Headers show
Series vfio/migration: Block VFIO migration with postcopy and background snapshot | expand

Commit Message

Avihai Horon Aug. 28, 2023, 3:18 p.m. UTC
If a device with enable-migration=on is added and it causes a migration
blocker, adding the device should fail with a proper error.

This is not the case with multiple device migration blocker when the
blocker already exists. If the blocker already exists and a device with
enable-migration=on is added which causes a migration blocker, adding
the device will succeed.

Fix it by failing adding the device in such case.

Fixes: 8bbcb64a71d8 ("vfio/migration: Make VFIO migration non-experimental")
Signed-off-by: Avihai Horon <avihaih@nvidia.com>
---
 hw/vfio/common.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Cédric Le Goater Aug. 29, 2023, 1:23 p.m. UTC | #1
On 8/28/23 17:18, Avihai Horon wrote:
> If a device with enable-migration=on is added and it causes a migration
> blocker, adding the device should fail with a proper error.
> 
> This is not the case with multiple device migration blocker when the
> blocker already exists. If the blocker already exists and a device with
> enable-migration=on is added which causes a migration blocker, adding
> the device will succeed.
> 
> Fix it by failing adding the device in such case.


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.



> 
> Fixes: 8bbcb64a71d8 ("vfio/migration: Make VFIO migration non-experimental")
> Signed-off-by: Avihai Horon <avihaih@nvidia.com>
> ---
>   hw/vfio/common.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index 8a8d074e18..237101d038 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -394,8 +394,7 @@ int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp)
>   {
>       int ret;
>   
> -    if (multiple_devices_migration_blocker ||
> -        vfio_multiple_devices_migration_is_supported()) {
> +    if (vfio_multiple_devices_migration_is_supported()) {
>           return 0;
>       }
>   
> @@ -405,6 +404,10 @@ int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp)
>           return -EINVAL;
>       }
>   
> +    if (multiple_devices_migration_blocker) {
> +        return 0;
> +    }
> +
>       error_setg(&multiple_devices_migration_blocker,
>                  "Multiple VFIO devices migration is supported only if all of "
>                  "them support P2P migration");
diff mbox series

Patch

diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index 8a8d074e18..237101d038 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -394,8 +394,7 @@  int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp)
 {
     int ret;
 
-    if (multiple_devices_migration_blocker ||
-        vfio_multiple_devices_migration_is_supported()) {
+    if (vfio_multiple_devices_migration_is_supported()) {
         return 0;
     }
 
@@ -405,6 +404,10 @@  int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp)
         return -EINVAL;
     }
 
+    if (multiple_devices_migration_blocker) {
+        return 0;
+    }
+
     error_setg(&multiple_devices_migration_blocker,
                "Multiple VFIO devices migration is supported only if all of "
                "them support P2P migration");