@@ -215,7 +215,22 @@ void vfio_unblock_multiple_devices_migration(void)
bool vfio_viommu_preset(VFIODevice *vbasedev)
{
- return vbasedev->group->container->space->as != &address_space_memory;
+ VFIOAddressSpace *space;
+ VFIOContainer *container;
+ VFIODevice *tmp_vbasedev;
+
+ QLIST_FOREACH(space, &vfio_address_spaces, list) {
+ QLIST_FOREACH(container, &space->containers, next) {
+ tmp_vbasedev = NULL;
+ while ((vbasedev = vfio_container_dev_iter_next(container,
+ vbasedev))) {
+ if (vbasedev == tmp_vbasedev) {
+ return space->as != &address_space_memory;
+ }
+ }
+ }
+ }
+ g_assert_not_reached();
}
static void vfio_set_migration_error(int err)
So that it doesn't need to be moved into container.c as done in following patch. Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> --- hw/vfio/common.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)