public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: Pranjal Shrivastava <praan@google•com>
To: iommu@lists•linux.dev, linux-pci@vger•kernel.org,
	 linux-arm-kernel@lists•infradead.org,
	linux-kernel@vger•kernel.org
Cc: Joerg Roedel <joro@8bytes•org>, Will Deacon <will@kernel•org>,
	 Bjorn Helgaas <bhelgaas@google•com>,
	David Woodhouse <dwmw2@infradead•org>,
	 Lu Baolu <baolu.lu@linux•intel.com>,
	Robin Murphy <robin.murphy@arm•com>,
	 Suravee Suthikulpanit <suravee.suthikulpanit@amd•com>,
	Jason Gunthorpe <jgg@ziepe•ca>,
	 Nicolin Chen <nicolinc@nvidia•com>,
	David Matlack <dmatlack@google•com>,
	 Samiullah Khawaja <skhawaja@google•com>,
	Daniel Mentz <danielmentz@google•com>,
	 Pasha Tatashin <pasha.tatashin@soleen•com>,
	Mostafa Saleh <smostafa@google•com>,
	 Pranjal Shrivastava <praan@google•com>,
	Jason Gunthorpe <jgg@nvidia•com>
Subject: [PATCH v6 2/6] PCI/ATS: Validate STU for VFs in pci_prepare_ats()
Date: Fri, 29 May 2026 11:12:04 +0000	[thread overview]
Message-ID: <20260529111208.387412-3-praan@google.com> (raw)
In-Reply-To: <20260529111208.387412-1-praan@google.com>

While every PCI Function that implements ATS has an independent ATS
Extended Capability structure with a Read/Write Smallest Translation
Unit (STU) field, the kernel manages SR-IOV ATS by requiring the IOMMU
driver to configure the STU on the Physical Function (PF) before any
any Virtual Functions (VFs) are created.

Currently, pci_prepare_ats() bails out early for VFs, assuming that the
PF has already been correctly prepared. However, this creates a potential
mismatch if a VF is subsequently prepared with a different page shift.

Update pci_prepare_ats() to validate that the requested page shift (ps)
matches the STU already configured in the associated PF. This ensures
early detection of incompatible configurations and maintains the kernel's
policy of consistent STU sizing across all functions associated with a
given SMMU.

Reviewed-by: Jason Gunthorpe <jgg@nvidia•com>
Reviewed-by: Samiullah Khawaja <skhawaja@google•com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia•com>
Reviewed-by: Lu Baolu <baolu.lu@linux•intel.com>
Signed-off-by: Pranjal Shrivastava <praan@google•com>
---
 drivers/pci/ats.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c
index 679a3c3c1d54..9cb23780093d 100644
--- a/drivers/pci/ats.c
+++ b/drivers/pci/ats.c
@@ -73,8 +73,12 @@ int pci_prepare_ats(struct pci_dev *dev, int ps)
 	if (ps < PCI_ATS_MIN_STU)
 		return -EINVAL;
 
-	if (dev->is_virtfn)
+	if (dev->is_virtfn) {
+		if (pci_physfn(dev)->ats_stu != ps)
+			return -EINVAL;
+
 		return 0;
+	}
 
 	dev->ats_stu = ps;
 	ctrl = PCI_ATS_CTRL_STU(dev->ats_stu - PCI_ATS_MIN_STU);
-- 
2.54.0.823.g6e5bcc1fc9-goog



  parent reply	other threads:[~2026-05-29 11:12 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29 11:12 [PATCH v6 0/6] iommu: Standardize ATS robustness and state tracking Pranjal Shrivastava
2026-05-29 11:12 ` [PATCH v6 1/6] PCI/ATS: Ensure pci_ats_supported() is PF-aware for VFs Pranjal Shrivastava
2026-05-29 11:12 ` Pranjal Shrivastava [this message]
2026-05-29 11:12 ` [PATCH v6 3/6] PCI/ATS: Mandate checking pci_ats_supported() before pci_prepare_ats() Pranjal Shrivastava
2026-05-29 21:56   ` Nicolin Chen
2026-05-31 17:06     ` Pranjal Shrivastava
2026-05-29 11:12 ` [PATCH v6 4/6] iommu/arm-smmu-v3: Standardize ATS enablement failure reporting Pranjal Shrivastava
2026-05-29 21:51   ` Nicolin Chen
2026-05-31 17:13     ` Pranjal Shrivastava
2026-05-29 11:12 ` [PATCH v6 5/6] iommu/vt-d: Fail probe on ATS configuration failure Pranjal Shrivastava
2026-05-29 11:12 ` [PATCH v6 6/6] iommu/amd: " Pranjal Shrivastava
2026-06-01  6:00   ` Ankit Soni
2026-06-01  6:20     ` Pranjal Shrivastava
2026-06-01  8:17       ` Ankit Soni
2026-06-01 10:35         ` Pranjal Shrivastava
2026-06-01  9:28       ` Vasant Hegde
2026-06-01 10:41         ` Pranjal Shrivastava

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=20260529111208.387412-3-praan@google.com \
    --to=praan@google$(echo .)com \
    --cc=baolu.lu@linux$(echo .)intel.com \
    --cc=bhelgaas@google$(echo .)com \
    --cc=danielmentz@google$(echo .)com \
    --cc=dmatlack@google$(echo .)com \
    --cc=dwmw2@infradead$(echo .)org \
    --cc=iommu@lists$(echo .)linux.dev \
    --cc=jgg@nvidia$(echo .)com \
    --cc=jgg@ziepe$(echo .)ca \
    --cc=joro@8bytes$(echo .)org \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-pci@vger$(echo .)kernel.org \
    --cc=nicolinc@nvidia$(echo .)com \
    --cc=pasha.tatashin@soleen$(echo .)com \
    --cc=robin.murphy@arm$(echo .)com \
    --cc=skhawaja@google$(echo .)com \
    --cc=smostafa@google$(echo .)com \
    --cc=suravee.suthikulpanit@amd$(echo .)com \
    --cc=will@kernel$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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