From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jacob Pan Subject: [PATCH v4 19/22] iommu/intel-svm: do not flush iotlb for viommu Date: Thu, 22 Mar 2018 20:12:11 -0700 Message-ID: <1521774734-48433-20-git-send-email-jacob.jun.pan@linux.intel.com> References: <1521774734-48433-1-git-send-email-jacob.jun.pan@linux.intel.com> Return-path: In-Reply-To: <1521774734-48433-1-git-send-email-jacob.jun.pan@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org To: iommu@lists.linux-foundation.org, LKML , Joerg Roedel , David Woodhouse , Jean-Philippe Brucker , Greg Kroah-Hartman , Rafael Wysocki Cc: "Liu, Yi L" , Lan Tianyu , "Tian, Kevin" , Raj Ashok , Alex Williamson , Jean Delvare , Christoph Hellwig , Jacob Pan List-Id: iommu@lists.linux-foundation.org vIOMMU passdown invalidation will be inclusive, PASID cache invalidation includes TLBs. See Intel VT-d Specification Ch 6.5.2.2 for details. Signed-off-by: Jacob Pan --- drivers/iommu/intel-svm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index 3a7bc77..66b8e10 100644 --- a/drivers/iommu/intel-svm.c +++ b/drivers/iommu/intel-svm.c @@ -284,7 +284,9 @@ static void intel_mm_release(struct mmu_notifier *mn, struct mm_struct *mm) rcu_read_lock(); list_for_each_entry_rcu(sdev, &svm->devs, list) { intel_flush_pasid_dev(svm, sdev, svm->pasid); - intel_flush_svm_range_dev(svm, sdev, 0, -1, 0, !svm->mm); + /* for emulated iommu, PASID cache invalidation implies IOTLB/DTLB */ + if (!cap_caching_mode(svm->iommu->cap)) + intel_flush_svm_range_dev(svm, sdev, 0, -1, 0, !svm->mm); } rcu_read_unlock(); -- 2.7.4