iommu.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Lu Baolu <baolu.lu@linux.intel.com>
To: iommu@lists.linux.dev
Cc: Kevin Tian <kevin.tian@intel.com>, Yi Liu <yi.l.liu@intel.com>,
	Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH 1/2] iommu/vt-d: Avoid unnecessary device TLB flush in map path
Date: Sun,  7 Apr 2024 22:42:31 +0800	[thread overview]
Message-ID: <20240407144232.190355-1-baolu.lu@linux.intel.com> (raw)

iommu_flush_iotlb_psi() is called in map and unmap paths. The caching
mode check before device TLB invalidation will cause device TLB
invalidation always issued if IOMMU is not running in the caching mode.
This is inefficient and causes performance overhead.

Make device TLB invalidation behavior consistent between batched mode
unmapping and strict mode unmapping. Device TLB invalidation should only
be requested in the unmap path if the IOMMU is not in caching mode.

Fixes: bf92df30df90 ("intel-iommu: Only avoid flushing device IOTLB for domain ID 0 in caching mode")
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
---
 drivers/iommu/intel/iommu.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 50eb9aed47cc..493b6a600394 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -1501,11 +1501,7 @@ static void iommu_flush_iotlb_psi(struct intel_iommu *iommu,
 	else
 		__iommu_flush_iotlb_psi(iommu, did, pfn, pages, ih);
 
-	/*
-	 * In caching mode, changes of pages from non-present to present require
-	 * flush. However, device IOTLB doesn't need to be flushed in this case.
-	 */
-	if (!cap_caching_mode(iommu->cap) || !map)
+	if (!cap_caching_mode(iommu->cap) && !map)
 		iommu_flush_dev_iotlb(domain, addr, mask);
 }
 
-- 
2.34.1


             reply	other threads:[~2024-04-07 14:43 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-07 14:42 Lu Baolu [this message]
2024-04-07 14:42 ` [PATCH 2/2] iommu/vt-d: Remove caching mode check before devtlb flush Lu Baolu
2024-04-08  7:21   ` Ethan Zhao
2024-04-08  7:23     ` Baolu Lu
2024-04-08  7:43       ` Ethan Zhao
2024-04-08 21:03   ` Jacob Pan
2024-04-09  3:12     ` Baolu Lu
2024-04-09 17:31       ` Jacob Pan
2024-04-10  0:32         ` Tian, Kevin
2024-04-10 16:19           ` Jacob Pan
2024-04-10 23:23             ` Tian, Kevin
2024-04-11 16:17               ` Jacob Pan
2024-04-12  3:13                 ` Tian, Kevin
2024-04-09  7:30   ` Tian, Kevin
2024-04-10  5:40     ` Baolu Lu
2024-04-10 23:49     ` Zhang, Tina
2024-04-11 12:15       ` Baolu Lu
2024-04-09  8:36   ` Yi Liu
2024-04-09  7:20 ` [PATCH 1/2] iommu/vt-d: Avoid unnecessary device TLB flush in map path Tian, Kevin
2024-04-09  7:21 ` Tian, Kevin
2024-04-09  8:27 ` Yi Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240407144232.190355-1-baolu.lu@linux.intel.com \
    --to=baolu.lu@linux.intel.com \
    --cc=iommu@lists.linux.dev \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=will@kernel.org \
    --cc=yi.l.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).