public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Lu Baolu <baolu.lu@linux.intel.com>
To: Jacob jun Pan <jacob.jun.pan@intel.com>,
	Kevin Tian <kevin.tian@intel.com>,
	Ashok Raj <ashok.raj@intel.com>, Liu Yi L <yi.l.liu@intel.com>
Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Jacob Pan <jacob.jun.pan@linux.intel.com>
Subject: [PATCH v2 3/4] iommu/vt-d: Drop stop marker messages
Date: Thu, 21 Apr 2022 19:35:57 +0800	[thread overview]
Message-ID: <20220421113558.3504874-4-baolu.lu@linux.intel.com> (raw)
In-Reply-To: <20220421113558.3504874-1-baolu.lu@linux.intel.com>

The page fault handling framework in the IOMMU core explicitly states
that it doesn't handle PCI PASID Stop Marker and the IOMMU drivers must
discard them before reporting faults. This handles Stop Marker messages
in prq_event_thread() before reporting events to the core.

The VT-d driver explicitly drains the pending page requests when a CPU
page table (represented by a mm struct) is unbound from a PASID according
to the procedures defined in the VT-d spec. The Stop Marker messages do
not need a response. Hence, it is safe to drop the Stop Marker messages
silently if any of them is found in the page request queue.

Fixes: d5b9e4bfe0d88 ("iommu/vt-d: Report prq to io-pgfault framework")
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
---
 drivers/iommu/intel/svm.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c
index c720d1be992d..0741ec165673 100644
--- a/drivers/iommu/intel/svm.c
+++ b/drivers/iommu/intel/svm.c
@@ -760,6 +760,10 @@ static irqreturn_t prq_event_thread(int irq, void *d)
 			goto bad_req;
 		}
 
+		/* Drop Stop Marker message. No need for a response. */
+		if (unlikely(req->lpig && !req->rd_req && !req->wr_req))
+			goto prq_advance;
+
 		if (!svm || svm->pasid != req->pasid) {
 			/*
 			 * It can't go away, because the driver is not permitted
-- 
2.25.1


  parent reply	other threads:[~2022-04-21 11:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21 11:35 [PATCH v2 0/4] iommu/vt-d: Some fine tuning of SVA Lu Baolu
2022-04-21 11:35 ` [PATCH v2 1/4] iommu/vt-d: Check before setting PGSNP bit in pasid table entry Lu Baolu
2022-04-22  2:47   ` Tian, Kevin
2022-04-22 13:04     ` Lu Baolu
2022-04-24  3:37       ` Tian, Kevin
2022-04-24  4:37         ` Lu Baolu
2022-04-24  5:55           ` Tian, Kevin
2022-04-24  6:23             ` Lu Baolu
2022-04-21 11:35 ` [PATCH v2 2/4] iommu/vt-d: Set PGSNP bit in pasid table entry for SVA binding Lu Baolu
2022-04-22  3:05   ` Tian, Kevin
2022-04-22 13:13     ` Lu Baolu
2022-04-21 11:35 ` Lu Baolu [this message]
2022-04-22  3:05   ` [PATCH v2 3/4] iommu/vt-d: Drop stop marker messages Tian, Kevin
2022-04-23  7:32     ` Lu Baolu
2022-04-21 11:35 ` [PATCH v2 4/4] iommu/vt-d: Size Page Request Queue to avoid overflow condition Lu Baolu
2022-04-22  3:07   ` Tian, Kevin

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=20220421113558.3504874-4-baolu.lu@linux.intel.com \
    --to=baolu.lu@linux.intel.com \
    --cc=ashok.raj@intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@intel.com \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.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