This series enables PCI ATS in SMMUv3. Changes since v2 [1]: * Fix build failure when building arm-smmu-v3 without CONFIG_PCI Patches 1 and 2 are new. * Only enable ATS if the root complex supports it. For the moment, only IORT provides this information. I have patches for devicetree but they are less mature and I'd rather make it a separate series. * Tried to address most comments. I'll see if I can improve the firmware code when adding devicetree support (see [2]). Note that there is a small conflict with the SVA API. This series applies on top of Joerg's api-features branch for v5.2. [1] https://www.spinics.net/lists/arm-kernel/msg719722.html [2] git://linux-arm.org/linux-jpb.git ats/current Jean-Philippe Brucker (9): PCI: Move ATS declarations outside of CONFIG_PCI PCI: Add a stub for pci_ats_disabled() ACPI/IORT: Check ATS capability in root complex nodes iommu/arm-smmu-v3: Rename arm_smmu_master_data to arm_smmu_master iommu/arm-smmu-v3: Store SteamIDs in master iommu/arm-smmu-v3: Add a master->domain pointer iommu/arm-smmu-v3: Link domains and devices iommu/arm-smmu-v3: Add support for PCI ATS iommu/arm-smmu-v3: Disable tagged pointers drivers/acpi/arm64/iort.c | 11 ++ drivers/iommu/arm-smmu-v3.c | 345 ++++++++++++++++++++++++++++-------- include/linux/iommu.h | 4 + include/linux/pci.h | 31 ++-- 4 files changed, 306 insertions(+), 85 deletions(-) -- 2.21.0