Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/7] iommu: Standardize ATS robustness and state tracking
@ 2026-05-28 20:23 Pranjal Shrivastava
  2026-05-28 20:23 ` [PATCH v5 1/7] PCI/ATS: Ensure pci_ats_supported() is PF-aware for VFs Pranjal Shrivastava
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Pranjal Shrivastava @ 2026-05-28 20:23 UTC (permalink / raw)
  To: iommu, linux-pci, linux-arm-kernel, linux-kernel
  Cc: Joerg Roedel, Will Deacon, Bjorn Helgaas, David Woodhouse,
	Lu Baolu, Robin Murphy, Suravee Suthikulpanit, Jason Gunthorpe,
	Nicolin Chen, David Matlack, Samiullah Khawaja, Daniel Mentz,
	Pasha Tatashin, Mostafa Saleh, Pranjal Shrivastava

The primary motivation for this series is an ATS state mismatch observed
under heavy load (via iova_stress). A failure in pci_enable_ats() leaves
IOMMU drivers like arm-smmu-v3 with inconsistent state leading to PCI core
warnings during device detach.

While David's recent work [1] addressed a discovery race for specific
quirked devices by moving them to the HEADER phase, gaps remained
regarding how Virtual Functions (VFs) inherit state from their Physical
Functions (PFs). Specifically, pci_ats_supported() did not account for
PF-level quirked status, and pci_prepare_ats() lacked STU validation for
VFs.

Based on discussion with Jason in v3 it was decided that IOMMU drivers 
should explicitly check pci_ats_supported before calling pci_prepare_ats
To facilitate this, pci_prepare_ats() has been decoupled from the internal
support check. Furthermore, the device probe should fail if pci_prepare_ats()
fails. Since these early gates preclude software configuration errors,
any remaining failure during pci_enable_ats() is treated as a kernel bug

This series standardizes this pattern across ARM SMMUv3, Intel VT-d, &
AMD IOMMU drivers, while also hardening the latter two against pre-existing
issues found by Sashiko in their probe error paths identified during review.

[1] https://lore.kernel.org/linux-pci/20260403222750.1215002-1-dmatlack@google.com/

[v5]
 - Decoupled pci_ats_supported() from pci_prepare_ats() in the PCI core.
 - Rebased SMMUv3 support on top of Nicolin's "Always-On ATS" series.
 - Fixed pre-existing RB-tree corruption in VT-d probe (Baolu/Sashiko).
 - Addressed the pre-existing UAF in AMD IOMMU probe suggested by Sashiko
 - Collected R-b tags from Nicolin.

[v4]
 - https://lore.kernel.org/all/20260525184347.4059549-1-praan@google.com/
 - Standardized the pattern across Intel VT-d and AMD IOMMU drivers.
 - Replaced the SMMUv3 ats_prepared gate with a fatal probe-fail logic.
 - Utilized WARN() macros for runtime enablement failures in all drivers.
 - Collected R-b tags from Jason and Sami.

[v3] https://lore.kernel.org/all/20260519135323.1558777-1-praan@google.com/
[v2] https://lore.kernel.org/all/20260504163842.2692314-1-praan@google.com/


Pranjal Shrivastava (7):
  PCI/ATS: Ensure pci_ats_supported() is PF-aware for VFs
  PCI/ATS: Validate STU for VFs in pci_prepare_ats()
  PCI/ATS: Decouple pci_ats_supported() from pci_prepare_ats()
  iommu/arm-smmu-v3: Standardize ATS enablement failure reporting
  iommu/vt-d: Fix RB-tree corruption and Use-After-Free in probe
  iommu/vt-d: Fail probe on ATS configuration failure
  iommu/amd: Fail probe on ATS configuration failure

 drivers/iommu/amd/iommu.c                   | 30 ++++++++++++++++-----
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 10 +++++--
 drivers/iommu/intel/iommu.c                 | 22 ++++++++++++---
 drivers/pci/ats.c                           | 21 ++++++++++-----
 4 files changed, 64 insertions(+), 19 deletions(-)

-- 
2.54.0.823.g6e5bcc1fc9-goog



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-05-29  7:09 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28 20:23 [PATCH v5 0/7] iommu: Standardize ATS robustness and state tracking Pranjal Shrivastava
2026-05-28 20:23 ` [PATCH v5 1/7] PCI/ATS: Ensure pci_ats_supported() is PF-aware for VFs Pranjal Shrivastava
2026-05-29  6:02   ` Baolu Lu
2026-05-28 20:23 ` [PATCH v5 2/7] PCI/ATS: Validate STU for VFs in pci_prepare_ats() Pranjal Shrivastava
2026-05-29  6:05   ` Baolu Lu
2026-05-28 20:23 ` [PATCH v5 3/7] PCI/ATS: Decouple pci_ats_supported() from pci_prepare_ats() Pranjal Shrivastava
2026-05-29  6:29   ` Baolu Lu
2026-05-29  7:08     ` Pranjal Shrivastava
2026-05-28 20:23 ` [PATCH v5 4/7] iommu/arm-smmu-v3: Standardize ATS enablement failure reporting Pranjal Shrivastava
2026-05-28 20:23 ` [PATCH v5 5/7] iommu/vt-d: Fix RB-tree corruption and Use-After-Free in probe Pranjal Shrivastava
2026-05-29  3:20   ` Baolu Lu
2026-05-29  7:04     ` Pranjal Shrivastava
2026-05-28 20:23 ` [PATCH v5 6/7] iommu/vt-d: Fail probe on ATS configuration failure Pranjal Shrivastava
2026-05-29  6:39   ` Baolu Lu
2026-05-29  7:03     ` Pranjal Shrivastava
2026-05-28 20:23 ` [PATCH v5 7/7] iommu/amd: " Pranjal Shrivastava

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox