aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
authorKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>2019-02-19 14:06:09 -0500
committerJoerg Roedel <jroedel@suse.de>2019-02-26 05:08:07 -0500
commit8c938ddc6df3bbe72809db1be6c9f3af83f5d7a9 (patch)
treea537049ef8689b691c19a966137140965bb10f83 /include/linux/pci.h
parent1b84778a62ad6d0d97ace457072d93933f306ef5 (diff)
PCI/ATS: Add pci_ats_page_aligned() interface
Return the Page Aligned Request bit in the ATS Capability Register. As per PCIe spec r4.0, sec 10.5.1.2, if the Page Aligned Request bit is set, it indicates the Untranslated Addresses generated by the device are always aligned to a 4096 byte boundary. An IOMMU that can only translate page-aligned addresses can only be used with devices that always produce aligned Untranslated Addresses. This interface will be used by drivers for such IOMMUs to determine whether devices can use the ATS service. Cc: Ashok Raj <ashok.raj@intel.com> Cc: Jacob Pan <jacob.jun.pan@linux.intel.com> Cc: Keith Busch <keith.busch@intel.com> Suggested-by: Ashok Raj <ashok.raj@intel.com> Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 65f1d8c2f082..9724a8c0496b 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1524,11 +1524,13 @@ void pci_ats_init(struct pci_dev *dev);
1524int pci_enable_ats(struct pci_dev *dev, int ps); 1524int pci_enable_ats(struct pci_dev *dev, int ps);
1525void pci_disable_ats(struct pci_dev *dev); 1525void pci_disable_ats(struct pci_dev *dev);
1526int pci_ats_queue_depth(struct pci_dev *dev); 1526int pci_ats_queue_depth(struct pci_dev *dev);
1527int pci_ats_page_aligned(struct pci_dev *dev);
1527#else 1528#else
1528static inline void pci_ats_init(struct pci_dev *d) { } 1529static inline void pci_ats_init(struct pci_dev *d) { }
1529static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; } 1530static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; }
1530static inline void pci_disable_ats(struct pci_dev *d) { } 1531static inline void pci_disable_ats(struct pci_dev *d) { }
1531static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; } 1532static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; }
1533static inline int pci_ats_page_aligned(struct pci_dev *dev) { return 0; }
1532#endif 1534#endif
1533 1535
1534#ifdef CONFIG_PCIE_PTM 1536#ifdef CONFIG_PCIE_PTM