Allow ATS to be always on for certain ATS-capable devices
Status from this message: Applied, thanks.
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v6 Latest3 patches 15 repliesApplied
- v53 patches 6 repliesSuperseded
- v43 patches 26 repliesSuperseded
Earlier versions · 3
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v3 | 3 patches | 23 replies | Superseded | |
| v2 | 3 patches | 9 replies | Superseded | |
| v1 RFC | 3 patches | 56 replies | Superseded |
Patches in v6 Applied
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | PCI: Add pci_ats_required() for CXL.cache capable devicesdrivers/ include/ include/ | +50 | 5 replies | |
| 2/3 | PCI: Allow ATS to be always on for pre-CXL devicesdrivers/ drivers/ drivers/ | +53 | 1 reply | |
| 3/3 | iommu/arm-smmu-v3: Allow ATS to be always ondrivers/ drivers/ | +73 | 8 replies |
Reviews trailers per patch
All 3 patches have a Reviewed-by or Acked-by.
| Patch | Jonathan Cameron | Jason Gunthorpe | Kevin Tian | Nirmoy Das | Dave Jiang | Bjorn Helgaas | Yi Liu | Pranjal Shrivastava |
|---|---|---|---|---|---|---|---|---|
| 1/3 | R-b | R-b | R-b | T-b A-b | R-b | A-b A-b | R-b | |
| 2/3 | R-b | R-b | R-b | R-b T-b | R-b | A-b | R-b | |
| 3/3 | R-b | R-b | R-b | T-b A-b | R-b | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 8 reviewers.
Cover letter [PATCH v6 0/3] Allow ATS to be always on for certain ATS-capable devices
PCI ATS function is controlled by the IOMMU driver calling pci_enable_ats() and pci_disable_ats() helpers. Depending on the driver implementation:
- ATS should be enabled when a translation channel is enabled on a PASID (a typical SVA case).
- ATS should be disabled when the device's RID is IOMMU bypassed and its PASIDs are not IOMMU-translated for any SVA use case.
However, certain PCIe devices require non-PASID ATS on the RID, even if the RID is IOMMU bypassed. E.g. CXL.cache capability requires ATS to access the physical memory; some pre-CXL NVIDIA GPUs also require the ATS to be always on even when their RIDs are IOMMU bypassed.
Provide a helper function to detect CXL.cache capability and scan through a pre-CXL device ID list.
As the initial use case, call the helper in ARM SMMUv3 driver and adapt the driver accordingly with a per-device ats_always_on flag.
This is on Github:
https://github.com/nicolinc/iommufd/commits/pci_ats_always_on-v6
Changelog
v6
* Add Acked-by from Bjorn
* Slightly update commit message (Yi's comments)
* [pci] Drop the redundant pci_ats_disabled() check
* [smmu] Fix mismatched detach path against attach path
* [smmu] Propagate arm_smmu_master_prepare_ats() error code
v5
https://lore.kernel.org/all/[email protected]/
* Add Reviewed-by from Dave
* Update comments in pci helpers
* s/pci_ats_always_on/pci_ats_required
* s/pci_cxl_ats_always_on/pci_cxl_ats_required
* s/pci_dev_specific_ats_always_on/pci_dev_specific_ats_required
v4
https://lore.kernel.org/all/[email protected]/
* Rebase on v7.1-rc1
* Added Reviewed/Tested/Acked-by lines
* Update commit messages and inline comments
* [pci-quirks] Add range-based scan for NVIDIA GPUs
* [smmu] Add missing arm_smmu_remove_master() in error path
* [pci-ats] Don't init "cap=0"; check pci_read_config_word error
v3
https://lore.kernel.org/all/[email protected]/
* Add Reviewed-by from Jonathan
* Update function kdocs of PCI APIs
* Simplify boolean return/variable computations
v2
https://lore.kernel.org/all/[email protected]/
* s/non-CXL/pre-CXL
* Rebase on v7.0-rc1
* Update inline comments and commit message
* Add WARN_ON back at !ptr in arm_smmu_clear_cd()
* Add NVIDIA CX10 Family NVlink-C2C to the pre-CXL list
* Do not add boolean parameter to arm_smmu_attach_dev_ste()
v1
https://lore.kernel.org/all/[email protected]/
Nicolin Chen (3):
PCI: Add pci_ats_required() for CXL.cache capable devices
PCI: Allow ATS to be always on for pre-CXL devices iommu/arm-smmu-v3: Allow ATS to be always on
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 + drivers/pci/pci.h | 9 +++ include/linux/pci-ats.h | 3 + include/uapi/linux/pci_regs.h | 1 + drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 81 ++++++++++++++++++--- drivers/pci/ats.c | 47 ++++++++++++ drivers/pci/quirks.c | 42 +++++++++++ 7 files changed, 175 insertions(+), 9 deletions(-)
Signature · 1 line
2.43.0