Message ID | 20230828151842.11303-3-avihaih@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vfio/migration: Block VFIO migration with postcopy and background snapshot | expand |
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 --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");
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(-)