This series introduces the ability for certain devices on s390 to bypass a layer of IOMMU via the iommu.passthrough=1 option. In order to enable this, the concept of an identity domain is added to s390-iommu. On s390, IOMMU passthrough is only allowed if indicated via a special bit in s390 CLP data for the associated device group, otherwise we must fall back to dma-iommu. Matthew Rosato (6): s390/pci: check for relaxed translation capability s390: enable ARCH_HAS_PHYS_TO_DMA iommu/s390: implement iommu passthrough via identity domain iommu: add routine to check strict setting iommu: document missing def_domain_type return iommu/s390: implement def_domain_type arch/s390/Kconfig | 1 + arch/s390/include/asm/device.h | 12 ++++++ arch/s390/include/asm/dma-direct.h | 14 +++++++ arch/s390/include/asm/pci.h | 2 +- arch/s390/include/asm/pci_clp.h | 4 +- arch/s390/pci/pci.c | 6 ++- arch/s390/pci/pci_bus.c | 2 + arch/s390/pci/pci_clp.c | 1 + drivers/iommu/iommu.c | 5 +++ drivers/iommu/s390-iommu.c | 65 ++++++++++++++++++++++++++++-- include/linux/iommu.h | 2 + 11 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 arch/s390/include/asm/device.h create mode 100644 arch/s390/include/asm/dma-direct.h -- 2.47.0