This call to qemuMigrationSrcIsAllowedHostdev() (which does a hardcoded fail of the migration if there is any PCI or mdev hostdev device in the domain) while doing the destination side of migration prep was found once the call to that same function was removed from the source side migration prep (commit 25883cd5). According to jdenemar, for the V2 migration protocol, prep of the destination is the first step, so this *was* the proper place to do the check, but for V3 migration this is in a way redundant (since we will have already done the check on the source side (updated by 25883cd5 to query QEMU rather than do a hardcoded fail)). Of course it's possible that the source could support migration of a particular VFIO device, but the destination doesn't. But the current check on the destination side is worthless even in that case, since it is just *always* failing rather than querying QEMU; and QEMU can't be queried at the point where the destination check is happening, since it isn't yet running. Anyway QEMU should complain when it's started if it's going to fail, so removing this check should just move the failure to happen a bit later. So the best solution to this problem is to simply remove the hardcoded check/fail from qemuMigrationDstPrepareFresh() and rely on QEMU to fail if it needs to. Fixes: 25883cd5f0b188f2417f294b7d219a77b219f7c2 Signed-off-by: Laine Stump <laine@xxxxxxxxxx> --- src/qemu/qemu_migration.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 20dc91f1ce..85b6b12f92 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3379,9 +3379,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, QEMU_MIGRATION_COOKIE_CAPS; } - if (!qemuMigrationSrcIsAllowedHostdev(*def)) - goto cleanup; - /* Let migration hook filter domain XML */ if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) { g_autofree char *xml = NULL; -- 2.35.3