Add support for stall and PRI to the SMMUv3 driver, along with a common I/O Page Fault handler. These patches were last sent as part of v7 of the larger SVA series [1]. Main changes since v7: * Dropped CONFIG_IOMMU_PAGE_FAULT, reuse CONFIG_IOMMU_SVA_LIB instead. * Extracted devicetree support into patch 4. * Added patch 5 for ACPI support. * Dropped event queue flush on unbind(). Since device drivers must complete DMA transactions before calling unbind(), there cannot be any pending stalled event. * A few small fixes. The series depends on "iommu/sva: Add PASID helpers" [2], since it provides the function to search an mm_struct by PASID. Has anyone been testing the PRI patches on hardware? I still only have a software model to test them, so as much as I'd like to cross this off my list, we could leave out patches 7-9 for now. [1] https://lore.kernel.org/linux-iommu/20200519175502.2504091-1-jean-philippe@xxxxxxxxxx/ [2] https://lore.kernel.org/linux-iommu/20201106155048.997886-1-jean-philippe@xxxxxxxxxx/ Jean-Philippe Brucker (9): iommu: Add a page fault handler iommu/arm-smmu-v3: Maintain a SID->device structure dt-bindings: document stall property for IOMMU masters of/iommu: Support dma-can-stall property ACPI/IORT: Enable stall support for platform devices iommu/arm-smmu-v3: Add stall support for platform devices PCI/ATS: Add PRI stubs PCI/ATS: Export PRI functions iommu/arm-smmu-v3: Add support for PRI drivers/iommu/Makefile | 1 + .../devicetree/bindings/iommu/iommu.txt | 18 + drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 69 +- drivers/iommu/iommu-sva-lib.h | 53 ++ include/linux/iommu.h | 4 + include/linux/pci-ats.h | 7 + drivers/acpi/arm64/iort.c | 1 + .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 52 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 605 +++++++++++++++--- drivers/iommu/io-pgfault.c | 462 +++++++++++++ drivers/iommu/of_iommu.c | 5 +- drivers/pci/ats.c | 4 + 12 files changed, 1191 insertions(+), 90 deletions(-) create mode 100644 drivers/iommu/io-pgfault.c -- 2.29.1