@@ -187,6 +187,8 @@ int kvm_assign_device(struct kvm *kvm,
PCI_SLOT(assigned_dev->host_devfn),
PCI_FUNC(assigned_dev->host_devfn));
+ iommu_commit(domain);
+
return 0;
out_unmap:
kvm_iommu_unmap_memslots(kvm);
@@ -215,6 +217,8 @@ int kvm_deassign_device(struct kvm *kvm,
PCI_SLOT(assigned_dev->host_devfn),
PCI_FUNC(assigned_dev->host_devfn));
+ iommu_commit(domain);
+
return 0;
}
@@ -235,6 +239,8 @@ int kvm_iommu_map_guest(struct kvm *kvm)
if (r)
goto out_unmap;
+ iommu_commit(kvm->arch.iommu_domain);
+
return 0;
out_unmap:
@@ -283,6 +289,8 @@ static void kvm_iommu_put_pages(struct kvm *kvm,
gfn += unmap_pages;
}
+
+ iommu_commit(domain);
}
static int kvm_iommu_unmap_memslots(struct kvm *kvm)
Use the new iommu_commit() function in the KVM device passthrough code. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> --- virt/kvm/iommu.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)