18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci# The IOVA library may also be used by non-IOMMU_API users 38c2ecf20Sopenharmony_ciconfig IOMMU_IOVA 48c2ecf20Sopenharmony_ci tristate 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci# The IOASID library may also be used by non-IOMMU_API users 78c2ecf20Sopenharmony_ciconfig IOASID 88c2ecf20Sopenharmony_ci tristate 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci# IOMMU_API always gets selected by whoever wants it. 118c2ecf20Sopenharmony_ciconfig IOMMU_API 128c2ecf20Sopenharmony_ci bool 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cimenuconfig IOMMU_SUPPORT 158c2ecf20Sopenharmony_ci bool "IOMMU Hardware Support" 168c2ecf20Sopenharmony_ci depends on MMU 178c2ecf20Sopenharmony_ci default y 188c2ecf20Sopenharmony_ci help 198c2ecf20Sopenharmony_ci Say Y here if you want to compile device drivers for IO Memory 208c2ecf20Sopenharmony_ci Management Units into the kernel. These devices usually allow to 218c2ecf20Sopenharmony_ci remap DMA requests and/or remap interrupts from other devices on the 228c2ecf20Sopenharmony_ci system. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciif IOMMU_SUPPORT 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cimenu "Generic IOMMU Pagetable Support" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci# Selected by the actual pagetable implementations 298c2ecf20Sopenharmony_ciconfig IOMMU_IO_PGTABLE 308c2ecf20Sopenharmony_ci bool 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciconfig IOMMU_IO_PGTABLE_LPAE 338c2ecf20Sopenharmony_ci bool "ARMv7/v8 Long Descriptor Format" 348c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE 358c2ecf20Sopenharmony_ci depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64) 368c2ecf20Sopenharmony_ci help 378c2ecf20Sopenharmony_ci Enable support for the ARM long descriptor pagetable format. 388c2ecf20Sopenharmony_ci This allocator supports 4K/2M/1G, 16K/32M and 64K/512M page 398c2ecf20Sopenharmony_ci sizes at both stage-1 and stage-2, as well as address spaces 408c2ecf20Sopenharmony_ci up to 48-bits in size. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciconfig IOMMU_IO_PGTABLE_LPAE_SELFTEST 438c2ecf20Sopenharmony_ci bool "LPAE selftests" 448c2ecf20Sopenharmony_ci depends on IOMMU_IO_PGTABLE_LPAE 458c2ecf20Sopenharmony_ci help 468c2ecf20Sopenharmony_ci Enable self-tests for LPAE page table allocator. This performs 478c2ecf20Sopenharmony_ci a series of page-table consistency checks during boot. 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci If unsure, say N here. 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ciconfig IOMMU_IO_PGTABLE_ARMV7S 528c2ecf20Sopenharmony_ci bool "ARMv7/v8 Short Descriptor Format" 538c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE 548c2ecf20Sopenharmony_ci depends on ARM || ARM64 || COMPILE_TEST 558c2ecf20Sopenharmony_ci help 568c2ecf20Sopenharmony_ci Enable support for the ARM Short-descriptor pagetable format. 578c2ecf20Sopenharmony_ci This supports 32-bit virtual and physical addresses mapped using 588c2ecf20Sopenharmony_ci 2-level tables with 4KB pages/1MB sections, and contiguous entries 598c2ecf20Sopenharmony_ci for 64KB pages/16MB supersections if indicated by the IOMMU driver. 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciconfig IOMMU_IO_PGTABLE_ARMV7S_SELFTEST 628c2ecf20Sopenharmony_ci bool "ARMv7s selftests" 638c2ecf20Sopenharmony_ci depends on IOMMU_IO_PGTABLE_ARMV7S 648c2ecf20Sopenharmony_ci help 658c2ecf20Sopenharmony_ci Enable self-tests for ARMv7s page table allocator. This performs 668c2ecf20Sopenharmony_ci a series of page-table consistency checks during boot. 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci If unsure, say N here. 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ciendmenu 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ciconfig IOMMU_DEBUGFS 738c2ecf20Sopenharmony_ci bool "Export IOMMU internals in DebugFS" 748c2ecf20Sopenharmony_ci depends on DEBUG_FS 758c2ecf20Sopenharmony_ci help 768c2ecf20Sopenharmony_ci Allows exposure of IOMMU device internals. This option enables 778c2ecf20Sopenharmony_ci the use of debugfs by IOMMU drivers as required. Devices can, 788c2ecf20Sopenharmony_ci at initialization time, cause the IOMMU code to create a top-level 798c2ecf20Sopenharmony_ci debug/iommu directory, and then populate a subdirectory with 808c2ecf20Sopenharmony_ci entries as required. 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ciconfig IOMMU_DEFAULT_PASSTHROUGH 838c2ecf20Sopenharmony_ci bool "IOMMU passthrough by default" 848c2ecf20Sopenharmony_ci depends on IOMMU_API 858c2ecf20Sopenharmony_ci help 868c2ecf20Sopenharmony_ci Enable passthrough by default, removing the need to pass in 878c2ecf20Sopenharmony_ci iommu.passthrough=on or iommu=pt through command line. If this 888c2ecf20Sopenharmony_ci is enabled, you can still disable with iommu.passthrough=off 898c2ecf20Sopenharmony_ci or iommu=nopt depending on the architecture. 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci If unsure, say N here. 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ciconfig OF_IOMMU 948c2ecf20Sopenharmony_ci def_bool y 958c2ecf20Sopenharmony_ci depends on OF && IOMMU_API 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci# IOMMU-agnostic DMA-mapping layer 988c2ecf20Sopenharmony_ciconfig IOMMU_DMA 998c2ecf20Sopenharmony_ci bool 1008c2ecf20Sopenharmony_ci select DMA_OPS 1018c2ecf20Sopenharmony_ci select IOMMU_API 1028c2ecf20Sopenharmony_ci select IOMMU_IOVA 1038c2ecf20Sopenharmony_ci select IRQ_MSI_IOMMU 1048c2ecf20Sopenharmony_ci select NEED_SG_DMA_LENGTH 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ciconfig FSL_PAMU 1078c2ecf20Sopenharmony_ci bool "Freescale IOMMU support" 1088c2ecf20Sopenharmony_ci depends on PCI 1098c2ecf20Sopenharmony_ci depends on PHYS_64BIT 1108c2ecf20Sopenharmony_ci depends on PPC_E500MC || (COMPILE_TEST && PPC) 1118c2ecf20Sopenharmony_ci select IOMMU_API 1128c2ecf20Sopenharmony_ci select GENERIC_ALLOCATOR 1138c2ecf20Sopenharmony_ci help 1148c2ecf20Sopenharmony_ci Freescale PAMU support. PAMU is the IOMMU present on Freescale QorIQ platforms. 1158c2ecf20Sopenharmony_ci PAMU can authorize memory access, remap the memory address, and remap I/O 1168c2ecf20Sopenharmony_ci transaction types. 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci# MSM IOMMU support 1198c2ecf20Sopenharmony_ciconfig MSM_IOMMU 1208c2ecf20Sopenharmony_ci bool "MSM IOMMU Support" 1218c2ecf20Sopenharmony_ci depends on ARM 1228c2ecf20Sopenharmony_ci depends on ARCH_MSM8X60 || ARCH_MSM8960 || COMPILE_TEST 1238c2ecf20Sopenharmony_ci select IOMMU_API 1248c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_ARMV7S 1258c2ecf20Sopenharmony_ci help 1268c2ecf20Sopenharmony_ci Support for the IOMMUs found on certain Qualcomm SOCs. 1278c2ecf20Sopenharmony_ci These IOMMUs allow virtualization of the address space used by most 1288c2ecf20Sopenharmony_ci cores within the multimedia subsystem. 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ci If unsure, say N here. 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_cisource "drivers/iommu/amd/Kconfig" 1338c2ecf20Sopenharmony_cisource "drivers/iommu/intel/Kconfig" 1348c2ecf20Sopenharmony_cisource "drivers/iommu/loongson/Kconfig" 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciconfig IRQ_REMAP 1378c2ecf20Sopenharmony_ci bool "Support for Interrupt Remapping" 1388c2ecf20Sopenharmony_ci depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI 1398c2ecf20Sopenharmony_ci select DMAR_TABLE 1408c2ecf20Sopenharmony_ci help 1418c2ecf20Sopenharmony_ci Supports Interrupt remapping for IO-APIC and MSI devices. 1428c2ecf20Sopenharmony_ci To use x2apic mode in the CPU's which support x2APIC enhancements or 1438c2ecf20Sopenharmony_ci to support platforms with CPU's having > 8 bit APIC ID, say Y. 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci# OMAP IOMMU support 1468c2ecf20Sopenharmony_ciconfig OMAP_IOMMU 1478c2ecf20Sopenharmony_ci bool "OMAP IOMMU Support" 1488c2ecf20Sopenharmony_ci depends on ARCH_OMAP2PLUS || COMPILE_TEST 1498c2ecf20Sopenharmony_ci select IOMMU_API 1508c2ecf20Sopenharmony_ci help 1518c2ecf20Sopenharmony_ci The OMAP3 media platform drivers depend on iommu support, 1528c2ecf20Sopenharmony_ci if you need them say Y here. 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ciconfig OMAP_IOMMU_DEBUG 1558c2ecf20Sopenharmony_ci bool "Export OMAP IOMMU internals in DebugFS" 1568c2ecf20Sopenharmony_ci depends on OMAP_IOMMU && DEBUG_FS 1578c2ecf20Sopenharmony_ci help 1588c2ecf20Sopenharmony_ci Select this to see extensive information about 1598c2ecf20Sopenharmony_ci the internal state of OMAP IOMMU in debugfs. 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci Say N unless you know you need this. 1628c2ecf20Sopenharmony_ci 1638c2ecf20Sopenharmony_ciconfig ROCKCHIP_IOMMU 1648c2ecf20Sopenharmony_ci bool "Rockchip IOMMU Support" 1658c2ecf20Sopenharmony_ci depends on ARCH_ROCKCHIP || COMPILE_TEST 1668c2ecf20Sopenharmony_ci select IOMMU_API 1678c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 1688c2ecf20Sopenharmony_ci help 1698c2ecf20Sopenharmony_ci Support for IOMMUs found on Rockchip rk32xx SOCs. 1708c2ecf20Sopenharmony_ci These IOMMUs allow virtualization of the address space used by most 1718c2ecf20Sopenharmony_ci cores within the multimedia subsystem. 1728c2ecf20Sopenharmony_ci Say Y here if you are using a Rockchip SoC that includes an IOMMU 1738c2ecf20Sopenharmony_ci device. 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ciconfig SUN50I_IOMMU 1768c2ecf20Sopenharmony_ci bool "Allwinner H6 IOMMU Support" 1778c2ecf20Sopenharmony_ci depends on HAS_DMA 1788c2ecf20Sopenharmony_ci depends on ARCH_SUNXI || COMPILE_TEST 1798c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 1808c2ecf20Sopenharmony_ci select IOMMU_API 1818c2ecf20Sopenharmony_ci help 1828c2ecf20Sopenharmony_ci Support for the IOMMU introduced in the Allwinner H6 SoCs. 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ciconfig TEGRA_IOMMU_GART 1858c2ecf20Sopenharmony_ci bool "Tegra GART IOMMU Support" 1868c2ecf20Sopenharmony_ci depends on ARCH_TEGRA_2x_SOC 1878c2ecf20Sopenharmony_ci depends on TEGRA_MC 1888c2ecf20Sopenharmony_ci select IOMMU_API 1898c2ecf20Sopenharmony_ci help 1908c2ecf20Sopenharmony_ci Enables support for remapping discontiguous physical memory 1918c2ecf20Sopenharmony_ci shared with the operating system into contiguous I/O virtual 1928c2ecf20Sopenharmony_ci space through the GART (Graphics Address Relocation Table) 1938c2ecf20Sopenharmony_ci hardware included on Tegra SoCs. 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ciconfig TEGRA_IOMMU_SMMU 1968c2ecf20Sopenharmony_ci bool "NVIDIA Tegra SMMU Support" 1978c2ecf20Sopenharmony_ci depends on ARCH_TEGRA 1988c2ecf20Sopenharmony_ci depends on TEGRA_AHB 1998c2ecf20Sopenharmony_ci depends on TEGRA_MC 2008c2ecf20Sopenharmony_ci select IOMMU_API 2018c2ecf20Sopenharmony_ci help 2028c2ecf20Sopenharmony_ci This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra 2038c2ecf20Sopenharmony_ci SoCs (Tegra30 up to Tegra210). 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ciconfig EXYNOS_IOMMU 2068c2ecf20Sopenharmony_ci bool "Exynos IOMMU Support" 2078c2ecf20Sopenharmony_ci depends on ARCH_EXYNOS || COMPILE_TEST 2088c2ecf20Sopenharmony_ci depends on !CPU_BIG_ENDIAN # revisit driver if we can enable big-endian ptes 2098c2ecf20Sopenharmony_ci select IOMMU_API 2108c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 2118c2ecf20Sopenharmony_ci help 2128c2ecf20Sopenharmony_ci Support for the IOMMU (System MMU) of Samsung Exynos application 2138c2ecf20Sopenharmony_ci processor family. This enables H/W multimedia accelerators to see 2148c2ecf20Sopenharmony_ci non-linear physical memory chunks as linear memory in their 2158c2ecf20Sopenharmony_ci address space. 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ci If unsure, say N here. 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ciconfig EXYNOS_IOMMU_DEBUG 2208c2ecf20Sopenharmony_ci bool "Debugging log for Exynos IOMMU" 2218c2ecf20Sopenharmony_ci depends on EXYNOS_IOMMU 2228c2ecf20Sopenharmony_ci help 2238c2ecf20Sopenharmony_ci Select this to see the detailed log message that shows what 2248c2ecf20Sopenharmony_ci happens in the IOMMU driver. 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci Say N unless you need kernel log message for IOMMU debugging. 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ciconfig IPMMU_VMSA 2298c2ecf20Sopenharmony_ci bool "Renesas VMSA-compatible IPMMU" 2308c2ecf20Sopenharmony_ci depends on ARCH_RENESAS || (COMPILE_TEST && !GENERIC_ATOMIC64) 2318c2ecf20Sopenharmony_ci select IOMMU_API 2328c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 2338c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 2348c2ecf20Sopenharmony_ci help 2358c2ecf20Sopenharmony_ci Support for the Renesas VMSA-compatible IPMMU found in the R-Mobile 2368c2ecf20Sopenharmony_ci APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs. 2378c2ecf20Sopenharmony_ci 2388c2ecf20Sopenharmony_ci If unsure, say N. 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ciconfig SPAPR_TCE_IOMMU 2418c2ecf20Sopenharmony_ci bool "sPAPR TCE IOMMU Support" 2428c2ecf20Sopenharmony_ci depends on PPC_POWERNV || PPC_PSERIES 2438c2ecf20Sopenharmony_ci select IOMMU_API 2448c2ecf20Sopenharmony_ci help 2458c2ecf20Sopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 2468c2ecf20Sopenharmony_ci is not implemented as it is not necessary for VFIO. 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_ci# ARM IOMMU support 2498c2ecf20Sopenharmony_ciconfig ARM_SMMU 2508c2ecf20Sopenharmony_ci tristate "ARM Ltd. System MMU (SMMU) Support" 2518c2ecf20Sopenharmony_ci depends on ARM64 || ARM || (COMPILE_TEST && !GENERIC_ATOMIC64) 2528c2ecf20Sopenharmony_ci select IOMMU_API 2538c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 2548c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU if ARM 2558c2ecf20Sopenharmony_ci help 2568c2ecf20Sopenharmony_ci Support for implementations of the ARM System MMU architecture 2578c2ecf20Sopenharmony_ci versions 1 and 2. 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ci Say Y here if your SoC includes an IOMMU device implementing 2608c2ecf20Sopenharmony_ci the ARM SMMU architecture. 2618c2ecf20Sopenharmony_ci 2628c2ecf20Sopenharmony_ciconfig ARM_SMMU_LEGACY_DT_BINDINGS 2638c2ecf20Sopenharmony_ci bool "Support the legacy \"mmu-masters\" devicetree bindings" 2648c2ecf20Sopenharmony_ci depends on ARM_SMMU=y && OF 2658c2ecf20Sopenharmony_ci help 2668c2ecf20Sopenharmony_ci Support for the badly designed and deprecated "mmu-masters" 2678c2ecf20Sopenharmony_ci devicetree bindings. This allows some DMA masters to attach 2688c2ecf20Sopenharmony_ci to the SMMU but does not provide any support via the DMA API. 2698c2ecf20Sopenharmony_ci If you're lucky, you might be able to get VFIO up and running. 2708c2ecf20Sopenharmony_ci 2718c2ecf20Sopenharmony_ci If you say Y here then you'll make me very sad. Instead, say N 2728c2ecf20Sopenharmony_ci and move your firmware to the utopian future that was 2016. 2738c2ecf20Sopenharmony_ci 2748c2ecf20Sopenharmony_ciconfig ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT 2758c2ecf20Sopenharmony_ci bool "Default to disabling bypass on ARM SMMU v1 and v2" 2768c2ecf20Sopenharmony_ci depends on ARM_SMMU 2778c2ecf20Sopenharmony_ci default y 2788c2ecf20Sopenharmony_ci help 2798c2ecf20Sopenharmony_ci Say Y here to (by default) disable bypass streams such that 2808c2ecf20Sopenharmony_ci incoming transactions from devices that are not attached to 2818c2ecf20Sopenharmony_ci an iommu domain will report an abort back to the device and 2828c2ecf20Sopenharmony_ci will not be allowed to pass through the SMMU. 2838c2ecf20Sopenharmony_ci 2848c2ecf20Sopenharmony_ci Any old kernels that existed before this KConfig was 2858c2ecf20Sopenharmony_ci introduced would default to _allowing_ bypass (AKA the 2868c2ecf20Sopenharmony_ci equivalent of NO for this config). However the default for 2878c2ecf20Sopenharmony_ci this option is YES because the old behavior is insecure. 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ci There are few reasons to allow unmatched stream bypass, and 2908c2ecf20Sopenharmony_ci even fewer good ones. If saying YES here breaks your board 2918c2ecf20Sopenharmony_ci you should work on fixing your board. This KConfig option 2928c2ecf20Sopenharmony_ci is expected to be removed in the future and we'll simply 2938c2ecf20Sopenharmony_ci hardcode the bypass disable in the code. 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_ci NOTE: the kernel command line parameter 2968c2ecf20Sopenharmony_ci 'arm-smmu.disable_bypass' will continue to override this 2978c2ecf20Sopenharmony_ci config. 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ciconfig ARM_SMMU_V3 3008c2ecf20Sopenharmony_ci tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support" 3018c2ecf20Sopenharmony_ci depends on ARM64 3028c2ecf20Sopenharmony_ci select IOMMU_API 3038c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 3048c2ecf20Sopenharmony_ci select GENERIC_MSI_IRQ_DOMAIN 3058c2ecf20Sopenharmony_ci help 3068c2ecf20Sopenharmony_ci Support for implementations of the ARM System MMU architecture 3078c2ecf20Sopenharmony_ci version 3 providing translation support to a PCIe root complex. 3088c2ecf20Sopenharmony_ci 3098c2ecf20Sopenharmony_ci Say Y here if your system includes an IOMMU device implementing 3108c2ecf20Sopenharmony_ci the ARM SMMUv3 architecture. 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ciconfig ARM_SMMU_V3_SVA 3138c2ecf20Sopenharmony_ci bool "Shared Virtual Addressing support for the ARM SMMUv3" 3148c2ecf20Sopenharmony_ci depends on ARM_SMMU_V3 3158c2ecf20Sopenharmony_ci help 3168c2ecf20Sopenharmony_ci Support for sharing process address spaces with devices using the 3178c2ecf20Sopenharmony_ci SMMUv3. 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_ci Say Y here if your system supports SVA extensions such as PCIe PASID 3208c2ecf20Sopenharmony_ci and PRI. 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_ciconfig S390_IOMMU 3238c2ecf20Sopenharmony_ci def_bool y if S390 && PCI 3248c2ecf20Sopenharmony_ci depends on S390 && PCI 3258c2ecf20Sopenharmony_ci select IOMMU_API 3268c2ecf20Sopenharmony_ci help 3278c2ecf20Sopenharmony_ci Support for the IOMMU API for s390 PCI devices. 3288c2ecf20Sopenharmony_ci 3298c2ecf20Sopenharmony_ciconfig S390_CCW_IOMMU 3308c2ecf20Sopenharmony_ci bool "S390 CCW IOMMU Support" 3318c2ecf20Sopenharmony_ci depends on S390 && CCW || COMPILE_TEST 3328c2ecf20Sopenharmony_ci select IOMMU_API 3338c2ecf20Sopenharmony_ci help 3348c2ecf20Sopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 3358c2ecf20Sopenharmony_ci is not implemented as it is not necessary for VFIO. 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ciconfig S390_AP_IOMMU 3388c2ecf20Sopenharmony_ci bool "S390 AP IOMMU Support" 3398c2ecf20Sopenharmony_ci depends on S390 && ZCRYPT || COMPILE_TEST 3408c2ecf20Sopenharmony_ci select IOMMU_API 3418c2ecf20Sopenharmony_ci help 3428c2ecf20Sopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 3438c2ecf20Sopenharmony_ci is not implemented as it is not necessary for VFIO. 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ciconfig MTK_IOMMU 3468c2ecf20Sopenharmony_ci bool "MTK IOMMU Support" 3478c2ecf20Sopenharmony_ci depends on ARCH_MEDIATEK || COMPILE_TEST 3488c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 3498c2ecf20Sopenharmony_ci select IOMMU_API 3508c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_ARMV7S 3518c2ecf20Sopenharmony_ci select MEMORY 3528c2ecf20Sopenharmony_ci select MTK_SMI 3538c2ecf20Sopenharmony_ci help 3548c2ecf20Sopenharmony_ci Support for the M4U on certain Mediatek SOCs. M4U is MultiMedia 3558c2ecf20Sopenharmony_ci Memory Management Unit. This option enables remapping of DMA memory 3568c2ecf20Sopenharmony_ci accesses for the multimedia subsystem. 3578c2ecf20Sopenharmony_ci 3588c2ecf20Sopenharmony_ci If unsure, say N here. 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_ciconfig MTK_IOMMU_V1 3618c2ecf20Sopenharmony_ci bool "MTK IOMMU Version 1 (M4U gen1) Support" 3628c2ecf20Sopenharmony_ci depends on ARM 3638c2ecf20Sopenharmony_ci depends on ARCH_MEDIATEK || COMPILE_TEST 3648c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 3658c2ecf20Sopenharmony_ci select IOMMU_API 3668c2ecf20Sopenharmony_ci select MEMORY 3678c2ecf20Sopenharmony_ci select MTK_SMI 3688c2ecf20Sopenharmony_ci help 3698c2ecf20Sopenharmony_ci Support for the M4U on certain Mediatek SoCs. M4U generation 1 HW is 3708c2ecf20Sopenharmony_ci Multimedia Memory Managememt Unit. This option enables remapping of 3718c2ecf20Sopenharmony_ci DMA memory accesses for the multimedia subsystem. 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ci if unsure, say N here. 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_ciconfig QCOM_IOMMU 3768c2ecf20Sopenharmony_ci # Note: iommu drivers cannot (yet?) be built as modules 3778c2ecf20Sopenharmony_ci bool "Qualcomm IOMMU Support" 3788c2ecf20Sopenharmony_ci depends on ARCH_QCOM || (COMPILE_TEST && !GENERIC_ATOMIC64) 3798c2ecf20Sopenharmony_ci select IOMMU_API 3808c2ecf20Sopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 3818c2ecf20Sopenharmony_ci select ARM_DMA_USE_IOMMU 3828c2ecf20Sopenharmony_ci help 3838c2ecf20Sopenharmony_ci Support for IOMMU on certain Qualcomm SoCs. 3848c2ecf20Sopenharmony_ci 3858c2ecf20Sopenharmony_ciconfig HYPERV_IOMMU 3868c2ecf20Sopenharmony_ci bool "Hyper-V x2APIC IRQ Handling" 3878c2ecf20Sopenharmony_ci depends on HYPERV && X86 3888c2ecf20Sopenharmony_ci select IOMMU_API 3898c2ecf20Sopenharmony_ci default HYPERV 3908c2ecf20Sopenharmony_ci help 3918c2ecf20Sopenharmony_ci Stub IOMMU driver to handle IRQs as to allow Hyper-V Linux 3928c2ecf20Sopenharmony_ci guests to run with x2APIC mode enabled. 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_ciconfig VIRTIO_IOMMU 3958c2ecf20Sopenharmony_ci tristate "Virtio IOMMU driver" 3968c2ecf20Sopenharmony_ci depends on VIRTIO 3978c2ecf20Sopenharmony_ci depends on ARM64 3988c2ecf20Sopenharmony_ci select IOMMU_API 3998c2ecf20Sopenharmony_ci select INTERVAL_TREE 4008c2ecf20Sopenharmony_ci help 4018c2ecf20Sopenharmony_ci Para-virtualised IOMMU driver with virtio. 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ci Say Y here if you intend to run this kernel as a guest. 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ciendif # IOMMU_SUPPORT 406