|
@@ -246,21 +246,20 @@ static int kvm_vfio_set_group(struct kvm_device *dev, long attr, u64 arg)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
list_del(&kvg->node);
|
|
list_del(&kvg->node);
|
|
|
|
+ kvm_arch_end_assignment(dev->kvm);
|
|
|
|
+#ifdef CONFIG_SPAPR_TCE_IOMMU
|
|
|
|
+ kvm_spapr_tce_release_vfio_group(dev->kvm,
|
|
|
|
+ kvg->vfio_group);
|
|
|
|
+#endif
|
|
|
|
+ kvm_vfio_group_set_kvm(kvg->vfio_group, NULL);
|
|
kvm_vfio_group_put_external_user(kvg->vfio_group);
|
|
kvm_vfio_group_put_external_user(kvg->vfio_group);
|
|
kfree(kvg);
|
|
kfree(kvg);
|
|
ret = 0;
|
|
ret = 0;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
- kvm_arch_end_assignment(dev->kvm);
|
|
|
|
-
|
|
|
|
mutex_unlock(&kv->lock);
|
|
mutex_unlock(&kv->lock);
|
|
|
|
|
|
-#ifdef CONFIG_SPAPR_TCE_IOMMU
|
|
|
|
- kvm_spapr_tce_release_vfio_group(dev->kvm, vfio_group);
|
|
|
|
-#endif
|
|
|
|
- kvm_vfio_group_set_kvm(vfio_group, NULL);
|
|
|
|
-
|
|
|
|
kvm_vfio_group_put_external_user(vfio_group);
|
|
kvm_vfio_group_put_external_user(vfio_group);
|
|
|
|
|
|
kvm_vfio_update_coherency(dev);
|
|
kvm_vfio_update_coherency(dev);
|