summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Williamson <alex.williamson@redhat.com>2011-05-24 13:02:41 +0200
committerDavid Woodhouse <David.Woodhouse@intel.com>2011-05-24 14:08:34 +0200
commit7b668357810ecb5fdda4418689d50f5d95aea6a8 (patch)
tree5a448c81b76121cd3903f807288bd562dc27645b
parentintel-iommu: Remove obsolete comment from detect_intel_iommu (diff)
downloadlinux-7b668357810ecb5fdda4418689d50f5d95aea6a8.tar.xz
linux-7b668357810ecb5fdda4418689d50f5d95aea6a8.zip
intel-iommu: Flush unmaps at domain_exit
We typically batch unmaps to be lazily flushed out at regular intervals. When we destroy a domain, we need to force a flush of these lazy unmaps to be sure none reference the domain we're about to free. Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=35062 Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Cc: stable@kernel.org
-rw-r--r--drivers/pci/intel-iommu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 4e4e0202e59d..395f253c0494 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -1422,6 +1422,10 @@ static void domain_exit(struct dmar_domain *domain)
if (!domain)
return;
+ /* Flush any lazy unmaps that may reference this domain */
+ if (!intel_iommu_strict)
+ flush_unmaps_timeout(0);
+
domain_remove_dev_info(domain);
/* destroy iovas */
put_iova_domain(&domain->iovad);