Hi All, This series of patches improves the s390 IOMMU driver. These improvements help existing IOMMU users, mainly vfio-pci, but at the same time are also in preparation of converting s390 to use the common DMA API implementation in drivers/iommu/dma-iommu.c instead of its platform specific DMA API in arch/s390/pci/pci_dma.c that sidesteps the IOMMU driver to control the same hardware interface directly. Among the included changes patch 1 improves the robustness of switching IOMMU domains and patch 2 adds the I/O TLB operations necessary for the DMA API conversion. Patches 3, 4, and 5 aim to improve performance with patch 5 being the most intrusive by removing the I/O translation table lock and using atomic updates instead. This series is based on the s390 branch of Joerg's IOMMU tree[0] that includes the latest s390 IOMMU fixes. It is available for easy testing in the iommu_improve_v2 branch with signed tag s390_iommu_improve_v2 of my git.kernel.org tree[1]. Best regards, Niklas Schnelle Changes sinve v1: - If an IOTLB flush fails for one device don't skip the flush for other devices. This is also needed when RCU readers try to flush a detached device. (Jason) - Free a domain's IOMMU translation table via call_rcu() (Jason) [0] https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git/log/?h=s390 [1] https://git.kernel.org/pub/scm/linux/kernel/git/niks/linux.git/ Niklas Schnelle (5): iommu/s390: Make attach succeed even if the device is in error state iommu/s390: Add I/O TLB ops iommu/s390: Use RCU to allow concurrent domain_list iteration iommu/s390: Optimize IOMMU table walking s390/pci: use lock-free I/O translation updates arch/s390/include/asm/pci.h | 4 +- arch/s390/kvm/pci.c | 6 +- arch/s390/pci/pci.c | 13 +-- arch/s390/pci/pci_dma.c | 77 +++++++++------ drivers/iommu/s390-iommu.c | 184 ++++++++++++++++++++++++------------ 5 files changed, 185 insertions(+), 99 deletions(-) -- 2.34.1