Add CONFIG_IOMMU_DEFAULT_PT for iommu=pt Allow default to iommu=pt without adding to command line. Add iommu=nopt to turn off default.
The reason we use iommu=pt is to support using the DPDK igb_uio driver, which we need to do on servers that have an iommu but lack ACS. Signed-off-by: Glenn Serre <[email protected]> --- Documentation/kernel-parameters.txt | 3 ++- arch/x86/Kconfig | 7 +++++++ arch/x86/kernel/pci-dma.c | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -1748,6 +1748,7 @@ forcesac soft pt [x86, IA-64] + nopt [x86] nobypass [PPC/POWERNV] Disable IOMMU bypass, using IOMMU for PCI devices. --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -882,6 +882,13 @@ def_bool y depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU +config IOMMU_DEFAULT_PT + def_bool n + prompt "Set iommu=pt by default" + help + Selecting this option will set iommu passthrough (iommu=pt) + by default. Use iommu=nopt to override. + config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes" depends on X86_64 && SMP && DEBUG_KERNEL --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c @@ -43,7 +43,7 @@ * useful if a user wants to use an IOMMU only for KVM device assignment to * guests and not for driver dma translation. */ -int iommu_pass_through __read_mostly; +int iommu_pass_through __read_mostly = IS_ENABLED(CONFIG_IOMMU_DEFAULT_PT); extern struct iommu_table_entry __iommu_table[], __iommu_table_end[]; @@ -196,6 +196,8 @@ #endif if (!strncmp(p, "pt", 2)) iommu_pass_through = 1; + if (!strncmp(p, "nopt", 4)) + iommu_pass_through = 0; gart_parse_options(p); _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
