As Robin Murphy's suggestion: "It's also not necessarily obvious to the user how this interacts with IOMMU_DEFAULT_PASSTHROUGH, so if we really do go down this route, maybe it would be better to refactor the whole lot into a single selection of something like IOMMU_DEFAULT_MODE anyway." In this version, I tried to normalize the IOMMU dma mode boot options for all ARCHs. When IOMMU is enabled, there are 3 dma modes: paasthrough(bypass), lazy(mapping but defer the IOTLB invalidation), strict. But currently each ARCHs defined their private boot options, different with each other. For example, to enable/disable "passthrough", ARM64 use iommu.passthrough=1/0, X86 use iommu=pt/nopt, PPC/POWERNV use iommu=nobypass. Zhen Lei (6): iommu: use iommu.dma_mode to replace iommu.passthrough and iommu.strict iommu: keep dma mode build options consistent with cmdline options iommu: add iommu_default_dma_mode_get() helper s390/pci: use common boot option iommu.dma_mode powernv/iommu: use common boot option iommu.dma_mode x86/iommu: use common boot option iommu.dma_mode Documentation/admin-guide/kernel-parameters.txt | 42 +++++++------------- arch/ia64/include/asm/iommu.h | 2 - arch/ia64/kernel/pci-dma.c | 2 - arch/powerpc/platforms/powernv/pci-ioda.c | 23 +---------- arch/s390/pci/pci_dma.c | 20 +++------- arch/x86/include/asm/iommu.h | 1 - arch/x86/kernel/pci-dma.c | 20 ---------- drivers/iommu/Kconfig | 36 ++++++++++++++--- drivers/iommu/amd_iommu.c | 12 +++--- drivers/iommu/amd_iommu_init.c | 4 -- drivers/iommu/amd_iommu_types.h | 6 --- drivers/iommu/intel-iommu.c | 7 +--- drivers/iommu/iommu.c | 52 ++++++++++++++++--------- include/linux/iommu.h | 16 ++++++++ 14 files changed, 108 insertions(+), 135 deletions(-) -- 1.8.3