13d0407baSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 23d0407baSopenharmony_ci# The IOVA library may also be used by non-IOMMU_API users 33d0407baSopenharmony_ciconfig IOMMU_IOVA 43d0407baSopenharmony_ci tristate 53d0407baSopenharmony_ci 63d0407baSopenharmony_ci# The IOASID library may also be used by non-IOMMU_API users 73d0407baSopenharmony_ciconfig IOASID 83d0407baSopenharmony_ci tristate 93d0407baSopenharmony_ci 103d0407baSopenharmony_ci# IOMMU_API always gets selected by whoever wants it. 113d0407baSopenharmony_ciconfig IOMMU_API 123d0407baSopenharmony_ci bool 133d0407baSopenharmony_ci 143d0407baSopenharmony_cimenuconfig IOMMU_SUPPORT 153d0407baSopenharmony_ci bool "IOMMU Hardware Support" 163d0407baSopenharmony_ci depends on MMU 173d0407baSopenharmony_ci default y 183d0407baSopenharmony_ci help 193d0407baSopenharmony_ci Say Y here if you want to compile device drivers for IO Memory 203d0407baSopenharmony_ci Management Units into the kernel. These devices usually allow to 213d0407baSopenharmony_ci remap DMA requests and/or remap interrupts from other devices on the 223d0407baSopenharmony_ci system. 233d0407baSopenharmony_ci 243d0407baSopenharmony_ciif IOMMU_SUPPORT 253d0407baSopenharmony_ci 263d0407baSopenharmony_cimenu "Generic IOMMU Pagetable Support" 273d0407baSopenharmony_ci 283d0407baSopenharmony_ci# Selected by the actual pagetable implementations 293d0407baSopenharmony_ciconfig IOMMU_IO_PGTABLE 303d0407baSopenharmony_ci bool 313d0407baSopenharmony_ci 323d0407baSopenharmony_ciconfig IOMMU_IO_PGTABLE_LPAE 333d0407baSopenharmony_ci bool "ARMv7/v8 Long Descriptor Format" 343d0407baSopenharmony_ci select IOMMU_IO_PGTABLE 353d0407baSopenharmony_ci depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64) 363d0407baSopenharmony_ci help 373d0407baSopenharmony_ci Enable support for the ARM long descriptor pagetable format. 383d0407baSopenharmony_ci This allocator supports 4K/2M/1G, 16K/32M and 64K/512M page 393d0407baSopenharmony_ci sizes at both stage-1 and stage-2, as well as address spaces 403d0407baSopenharmony_ci up to 48-bits in size. 413d0407baSopenharmony_ci 423d0407baSopenharmony_ciconfig IOMMU_IO_PGTABLE_LPAE_SELFTEST 433d0407baSopenharmony_ci bool "LPAE selftests" 443d0407baSopenharmony_ci depends on IOMMU_IO_PGTABLE_LPAE 453d0407baSopenharmony_ci help 463d0407baSopenharmony_ci Enable self-tests for LPAE page table allocator. This performs 473d0407baSopenharmony_ci a series of page-table consistency checks during boot. 483d0407baSopenharmony_ci 493d0407baSopenharmony_ci If unsure, say N here. 503d0407baSopenharmony_ci 513d0407baSopenharmony_ciconfig IOMMU_IO_PGTABLE_ARMV7S 523d0407baSopenharmony_ci bool "ARMv7/v8 Short Descriptor Format" 533d0407baSopenharmony_ci select IOMMU_IO_PGTABLE 543d0407baSopenharmony_ci depends on ARM || ARM64 || COMPILE_TEST 553d0407baSopenharmony_ci help 563d0407baSopenharmony_ci Enable support for the ARM Short-descriptor pagetable format. 573d0407baSopenharmony_ci This supports 32-bit virtual and physical addresses mapped using 583d0407baSopenharmony_ci 2-level tables with 4KB pages/1MB sections, and contiguous entries 593d0407baSopenharmony_ci for 64KB pages/16MB supersections if indicated by the IOMMU driver. 603d0407baSopenharmony_ci 613d0407baSopenharmony_ciconfig IOMMU_IO_PGTABLE_ARMV7S_SELFTEST 623d0407baSopenharmony_ci bool "ARMv7s selftests" 633d0407baSopenharmony_ci depends on IOMMU_IO_PGTABLE_ARMV7S 643d0407baSopenharmony_ci help 653d0407baSopenharmony_ci Enable self-tests for ARMv7s page table allocator. This performs 663d0407baSopenharmony_ci a series of page-table consistency checks during boot. 673d0407baSopenharmony_ci 683d0407baSopenharmony_ci If unsure, say N here. 693d0407baSopenharmony_ci 703d0407baSopenharmony_ciendmenu 713d0407baSopenharmony_ci 723d0407baSopenharmony_ciconfig IOMMU_DEBUGFS 733d0407baSopenharmony_ci bool "Export IOMMU internals in DebugFS" 743d0407baSopenharmony_ci depends on DEBUG_FS 753d0407baSopenharmony_ci help 763d0407baSopenharmony_ci Allows exposure of IOMMU device internals. This option enables 773d0407baSopenharmony_ci the use of debugfs by IOMMU drivers as required. Devices can, 783d0407baSopenharmony_ci at initialization time, cause the IOMMU code to create a top-level 793d0407baSopenharmony_ci debug/iommu directory, and then populate a subdirectory with 803d0407baSopenharmony_ci entries as required. 813d0407baSopenharmony_ci 823d0407baSopenharmony_ciconfig IOMMU_DEFAULT_PASSTHROUGH 833d0407baSopenharmony_ci bool "IOMMU passthrough by default" 843d0407baSopenharmony_ci depends on IOMMU_API 853d0407baSopenharmony_ci help 863d0407baSopenharmony_ci Enable passthrough by default, removing the need to pass in 873d0407baSopenharmony_ci iommu.passthrough=on or iommu=pt through command line. If this 883d0407baSopenharmony_ci is enabled, you can still disable with iommu.passthrough=off 893d0407baSopenharmony_ci or iommu=nopt depending on the architecture. 903d0407baSopenharmony_ci 913d0407baSopenharmony_ci If unsure, say N here. 923d0407baSopenharmony_ci 933d0407baSopenharmony_ciconfig OF_IOMMU 943d0407baSopenharmony_ci def_bool y 953d0407baSopenharmony_ci depends on OF && IOMMU_API 963d0407baSopenharmony_ci 973d0407baSopenharmony_ci# IOMMU-agnostic DMA-mapping layer 983d0407baSopenharmony_ciconfig IOMMU_DMA 993d0407baSopenharmony_ci bool 1003d0407baSopenharmony_ci select DMA_OPS 1013d0407baSopenharmony_ci select IOMMU_API 1023d0407baSopenharmony_ci select IOMMU_IOVA 1033d0407baSopenharmony_ci select IRQ_MSI_IOMMU 1043d0407baSopenharmony_ci select NEED_SG_DMA_LENGTH 1053d0407baSopenharmony_ci 1063d0407baSopenharmony_ciconfig FSL_PAMU 1073d0407baSopenharmony_ci bool "Freescale IOMMU support" 1083d0407baSopenharmony_ci depends on PCI 1093d0407baSopenharmony_ci depends on PHYS_64BIT 1103d0407baSopenharmony_ci depends on PPC_E500MC || (COMPILE_TEST && PPC) 1113d0407baSopenharmony_ci select IOMMU_API 1123d0407baSopenharmony_ci select GENERIC_ALLOCATOR 1133d0407baSopenharmony_ci help 1143d0407baSopenharmony_ci Freescale PAMU support. PAMU is the IOMMU present on Freescale QorIQ platforms. 1153d0407baSopenharmony_ci PAMU can authorize memory access, remap the memory address, and remap I/O 1163d0407baSopenharmony_ci transaction types. 1173d0407baSopenharmony_ci 1183d0407baSopenharmony_ci# MSM IOMMU support 1193d0407baSopenharmony_ciconfig MSM_IOMMU 1203d0407baSopenharmony_ci bool "MSM IOMMU Support" 1213d0407baSopenharmony_ci depends on ARM 1223d0407baSopenharmony_ci depends on ARCH_MSM8X60 || ARCH_MSM8960 || COMPILE_TEST 1233d0407baSopenharmony_ci select IOMMU_API 1243d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_ARMV7S 1253d0407baSopenharmony_ci help 1263d0407baSopenharmony_ci Support for the IOMMUs found on certain Qualcomm SOCs. 1273d0407baSopenharmony_ci These IOMMUs allow virtualization of the address space used by most 1283d0407baSopenharmony_ci cores within the multimedia subsystem. 1293d0407baSopenharmony_ci 1303d0407baSopenharmony_ci If unsure, say N here. 1313d0407baSopenharmony_ci 1323d0407baSopenharmony_cisource "drivers/iommu/amd/Kconfig" 1333d0407baSopenharmony_cisource "drivers/iommu/intel/Kconfig" 1343d0407baSopenharmony_ci 1353d0407baSopenharmony_ciconfig IRQ_REMAP 1363d0407baSopenharmony_ci bool "Support for Interrupt Remapping" 1373d0407baSopenharmony_ci depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI 1383d0407baSopenharmony_ci select DMAR_TABLE 1393d0407baSopenharmony_ci help 1403d0407baSopenharmony_ci Supports Interrupt remapping for IO-APIC and MSI devices. 1413d0407baSopenharmony_ci To use x2apic mode in the CPU's which support x2APIC enhancements or 1423d0407baSopenharmony_ci to support platforms with CPU's having > 8 bit APIC ID, say Y. 1433d0407baSopenharmony_ci 1443d0407baSopenharmony_ci# OMAP IOMMU support 1453d0407baSopenharmony_ciconfig OMAP_IOMMU 1463d0407baSopenharmony_ci bool "OMAP IOMMU Support" 1473d0407baSopenharmony_ci depends on ARCH_OMAP2PLUS || COMPILE_TEST 1483d0407baSopenharmony_ci select IOMMU_API 1493d0407baSopenharmony_ci help 1503d0407baSopenharmony_ci The OMAP3 media platform drivers depend on iommu support, 1513d0407baSopenharmony_ci if you need them say Y here. 1523d0407baSopenharmony_ci 1533d0407baSopenharmony_ciconfig OMAP_IOMMU_DEBUG 1543d0407baSopenharmony_ci bool "Export OMAP IOMMU internals in DebugFS" 1553d0407baSopenharmony_ci depends on OMAP_IOMMU && DEBUG_FS 1563d0407baSopenharmony_ci help 1573d0407baSopenharmony_ci Select this to see extensive information about 1583d0407baSopenharmony_ci the internal state of OMAP IOMMU in debugfs. 1593d0407baSopenharmony_ci 1603d0407baSopenharmony_ci Say N unless you know you need this. 1613d0407baSopenharmony_ci 1623d0407baSopenharmony_ciconfig ROCKCHIP_IOMMU 1633d0407baSopenharmony_ci tristate "Rockchip IOMMU Support" 1643d0407baSopenharmony_ci depends on ARM || ARM64 1653d0407baSopenharmony_ci depends on ARCH_ROCKCHIP || COMPILE_TEST 1663d0407baSopenharmony_ci select IOMMU_API 1673d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 1683d0407baSopenharmony_ci help 1693d0407baSopenharmony_ci Support for IOMMUs found on Rockchip rk32xx SOCs. 1703d0407baSopenharmony_ci These IOMMUs allow virtualization of the address space used by most 1713d0407baSopenharmony_ci cores within the multimedia subsystem. 1723d0407baSopenharmony_ci Say Y here if you are using a Rockchip SoC that includes an IOMMU 1733d0407baSopenharmony_ci device. 1743d0407baSopenharmony_ci 1753d0407baSopenharmony_ciconfig SUN50I_IOMMU 1763d0407baSopenharmony_ci bool "Allwinner H6 IOMMU Support" 1773d0407baSopenharmony_ci depends on HAS_DMA 1783d0407baSopenharmony_ci depends on ARCH_SUNXI || COMPILE_TEST 1793d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 1803d0407baSopenharmony_ci select IOMMU_API 1813d0407baSopenharmony_ci help 1823d0407baSopenharmony_ci Support for the IOMMU introduced in the Allwinner H6 SoCs. 1833d0407baSopenharmony_ci 1843d0407baSopenharmony_ciconfig TEGRA_IOMMU_GART 1853d0407baSopenharmony_ci bool "Tegra GART IOMMU Support" 1863d0407baSopenharmony_ci depends on ARCH_TEGRA_2x_SOC 1873d0407baSopenharmony_ci depends on TEGRA_MC 1883d0407baSopenharmony_ci select IOMMU_API 1893d0407baSopenharmony_ci help 1903d0407baSopenharmony_ci Enables support for remapping discontiguous physical memory 1913d0407baSopenharmony_ci shared with the operating system into contiguous I/O virtual 1923d0407baSopenharmony_ci space through the GART (Graphics Address Relocation Table) 1933d0407baSopenharmony_ci hardware included on Tegra SoCs. 1943d0407baSopenharmony_ci 1953d0407baSopenharmony_ciconfig TEGRA_IOMMU_SMMU 1963d0407baSopenharmony_ci bool "NVIDIA Tegra SMMU Support" 1973d0407baSopenharmony_ci depends on ARCH_TEGRA 1983d0407baSopenharmony_ci depends on TEGRA_AHB 1993d0407baSopenharmony_ci depends on TEGRA_MC 2003d0407baSopenharmony_ci select IOMMU_API 2013d0407baSopenharmony_ci help 2023d0407baSopenharmony_ci This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra 2033d0407baSopenharmony_ci SoCs (Tegra30 up to Tegra210). 2043d0407baSopenharmony_ci 2053d0407baSopenharmony_ciconfig EXYNOS_IOMMU 2063d0407baSopenharmony_ci bool "Exynos IOMMU Support" 2073d0407baSopenharmony_ci depends on ARCH_EXYNOS || COMPILE_TEST 2083d0407baSopenharmony_ci depends on !CPU_BIG_ENDIAN # revisit driver if we can enable big-endian ptes 2093d0407baSopenharmony_ci select IOMMU_API 2103d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 2113d0407baSopenharmony_ci help 2123d0407baSopenharmony_ci Support for the IOMMU (System MMU) of Samsung Exynos application 2133d0407baSopenharmony_ci processor family. This enables H/W multimedia accelerators to see 2143d0407baSopenharmony_ci non-linear physical memory chunks as linear memory in their 2153d0407baSopenharmony_ci address space. 2163d0407baSopenharmony_ci 2173d0407baSopenharmony_ci If unsure, say N here. 2183d0407baSopenharmony_ci 2193d0407baSopenharmony_ciconfig EXYNOS_IOMMU_DEBUG 2203d0407baSopenharmony_ci bool "Debugging log for Exynos IOMMU" 2213d0407baSopenharmony_ci depends on EXYNOS_IOMMU 2223d0407baSopenharmony_ci help 2233d0407baSopenharmony_ci Select this to see the detailed log message that shows what 2243d0407baSopenharmony_ci happens in the IOMMU driver. 2253d0407baSopenharmony_ci 2263d0407baSopenharmony_ci Say N unless you need kernel log message for IOMMU debugging. 2273d0407baSopenharmony_ci 2283d0407baSopenharmony_ciconfig IPMMU_VMSA 2293d0407baSopenharmony_ci bool "Renesas VMSA-compatible IPMMU" 2303d0407baSopenharmony_ci depends on ARCH_RENESAS || (COMPILE_TEST && !GENERIC_ATOMIC64) 2313d0407baSopenharmony_ci select IOMMU_API 2323d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 2333d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 2343d0407baSopenharmony_ci help 2353d0407baSopenharmony_ci Support for the Renesas VMSA-compatible IPMMU found in the R-Mobile 2363d0407baSopenharmony_ci APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs. 2373d0407baSopenharmony_ci 2383d0407baSopenharmony_ci If unsure, say N. 2393d0407baSopenharmony_ci 2403d0407baSopenharmony_ciconfig SPAPR_TCE_IOMMU 2413d0407baSopenharmony_ci bool "sPAPR TCE IOMMU Support" 2423d0407baSopenharmony_ci depends on PPC_POWERNV || PPC_PSERIES 2433d0407baSopenharmony_ci select IOMMU_API 2443d0407baSopenharmony_ci help 2453d0407baSopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 2463d0407baSopenharmony_ci is not implemented as it is not necessary for VFIO. 2473d0407baSopenharmony_ci 2483d0407baSopenharmony_ci# ARM IOMMU support 2493d0407baSopenharmony_ciconfig ARM_SMMU 2503d0407baSopenharmony_ci tristate "ARM Ltd. System MMU (SMMU) Support" 2513d0407baSopenharmony_ci depends on ARM64 || ARM || (COMPILE_TEST && !GENERIC_ATOMIC64) 2523d0407baSopenharmony_ci select IOMMU_API 2533d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 2543d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU if ARM 2553d0407baSopenharmony_ci help 2563d0407baSopenharmony_ci Support for implementations of the ARM System MMU architecture 2573d0407baSopenharmony_ci versions 1 and 2. 2583d0407baSopenharmony_ci 2593d0407baSopenharmony_ci Say Y here if your SoC includes an IOMMU device implementing 2603d0407baSopenharmony_ci the ARM SMMU architecture. 2613d0407baSopenharmony_ci 2623d0407baSopenharmony_ciconfig ARM_SMMU_LEGACY_DT_BINDINGS 2633d0407baSopenharmony_ci bool "Support the legacy \"mmu-masters\" devicetree bindings" 2643d0407baSopenharmony_ci depends on ARM_SMMU=y && OF 2653d0407baSopenharmony_ci help 2663d0407baSopenharmony_ci Support for the badly designed and deprecated "mmu-masters" 2673d0407baSopenharmony_ci devicetree bindings. This allows some DMA masters to attach 2683d0407baSopenharmony_ci to the SMMU but does not provide any support via the DMA API. 2693d0407baSopenharmony_ci If you're lucky, you might be able to get VFIO up and running. 2703d0407baSopenharmony_ci 2713d0407baSopenharmony_ci If you say Y here then you'll make me very sad. Instead, say N 2723d0407baSopenharmony_ci and move your firmware to the utopian future that was 2016. 2733d0407baSopenharmony_ci 2743d0407baSopenharmony_ciconfig ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT 2753d0407baSopenharmony_ci bool "Default to disabling bypass on ARM SMMU v1 and v2" 2763d0407baSopenharmony_ci depends on ARM_SMMU 2773d0407baSopenharmony_ci default y 2783d0407baSopenharmony_ci help 2793d0407baSopenharmony_ci Say Y here to (by default) disable bypass streams such that 2803d0407baSopenharmony_ci incoming transactions from devices that are not attached to 2813d0407baSopenharmony_ci an iommu domain will report an abort back to the device and 2823d0407baSopenharmony_ci will not be allowed to pass through the SMMU. 2833d0407baSopenharmony_ci 2843d0407baSopenharmony_ci Any old kernels that existed before this KConfig was 2853d0407baSopenharmony_ci introduced would default to _allowing_ bypass (AKA the 2863d0407baSopenharmony_ci equivalent of NO for this config). However the default for 2873d0407baSopenharmony_ci this option is YES because the old behavior is insecure. 2883d0407baSopenharmony_ci 2893d0407baSopenharmony_ci There are few reasons to allow unmatched stream bypass, and 2903d0407baSopenharmony_ci even fewer good ones. If saying YES here breaks your board 2913d0407baSopenharmony_ci you should work on fixing your board. This KConfig option 2923d0407baSopenharmony_ci is expected to be removed in the future and we'll simply 2933d0407baSopenharmony_ci hardcode the bypass disable in the code. 2943d0407baSopenharmony_ci 2953d0407baSopenharmony_ci NOTE: the kernel command line parameter 2963d0407baSopenharmony_ci 'arm-smmu.disable_bypass' will continue to override this 2973d0407baSopenharmony_ci config. 2983d0407baSopenharmony_ci 2993d0407baSopenharmony_ciconfig ARM_SMMU_V3 3003d0407baSopenharmony_ci tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support" 3013d0407baSopenharmony_ci depends on ARM64 3023d0407baSopenharmony_ci select IOMMU_API 3033d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 3043d0407baSopenharmony_ci select GENERIC_MSI_IRQ_DOMAIN 3053d0407baSopenharmony_ci help 3063d0407baSopenharmony_ci Support for implementations of the ARM System MMU architecture 3073d0407baSopenharmony_ci version 3 providing translation support to a PCIe root complex. 3083d0407baSopenharmony_ci 3093d0407baSopenharmony_ci Say Y here if your system includes an IOMMU device implementing 3103d0407baSopenharmony_ci the ARM SMMUv3 architecture. 3113d0407baSopenharmony_ci 3123d0407baSopenharmony_ciconfig ARM_SMMU_V3_SVA 3133d0407baSopenharmony_ci bool "Shared Virtual Addressing support for the ARM SMMUv3" 3143d0407baSopenharmony_ci depends on ARM_SMMU_V3 3153d0407baSopenharmony_ci help 3163d0407baSopenharmony_ci Support for sharing process address spaces with devices using the 3173d0407baSopenharmony_ci SMMUv3. 3183d0407baSopenharmony_ci 3193d0407baSopenharmony_ci Say Y here if your system supports SVA extensions such as PCIe PASID 3203d0407baSopenharmony_ci and PRI. 3213d0407baSopenharmony_ci 3223d0407baSopenharmony_ciconfig S390_IOMMU 3233d0407baSopenharmony_ci def_bool y if S390 && PCI 3243d0407baSopenharmony_ci depends on S390 && PCI 3253d0407baSopenharmony_ci select IOMMU_API 3263d0407baSopenharmony_ci help 3273d0407baSopenharmony_ci Support for the IOMMU API for s390 PCI devices. 3283d0407baSopenharmony_ci 3293d0407baSopenharmony_ciconfig S390_CCW_IOMMU 3303d0407baSopenharmony_ci bool "S390 CCW IOMMU Support" 3313d0407baSopenharmony_ci depends on S390 && CCW || COMPILE_TEST 3323d0407baSopenharmony_ci select IOMMU_API 3333d0407baSopenharmony_ci help 3343d0407baSopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 3353d0407baSopenharmony_ci is not implemented as it is not necessary for VFIO. 3363d0407baSopenharmony_ci 3373d0407baSopenharmony_ciconfig S390_AP_IOMMU 3383d0407baSopenharmony_ci bool "S390 AP IOMMU Support" 3393d0407baSopenharmony_ci depends on S390 && ZCRYPT || COMPILE_TEST 3403d0407baSopenharmony_ci select IOMMU_API 3413d0407baSopenharmony_ci help 3423d0407baSopenharmony_ci Enables bits of IOMMU API required by VFIO. The iommu_ops 3433d0407baSopenharmony_ci is not implemented as it is not necessary for VFIO. 3443d0407baSopenharmony_ci 3453d0407baSopenharmony_ciconfig MTK_IOMMU 3463d0407baSopenharmony_ci bool "MTK IOMMU Support" 3473d0407baSopenharmony_ci depends on ARCH_MEDIATEK || COMPILE_TEST 3483d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 3493d0407baSopenharmony_ci select IOMMU_API 3503d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_ARMV7S 3513d0407baSopenharmony_ci select MEMORY 3523d0407baSopenharmony_ci select MTK_SMI 3533d0407baSopenharmony_ci help 3543d0407baSopenharmony_ci Support for the M4U on certain Mediatek SOCs. M4U is MultiMedia 3553d0407baSopenharmony_ci Memory Management Unit. This option enables remapping of DMA memory 3563d0407baSopenharmony_ci accesses for the multimedia subsystem. 3573d0407baSopenharmony_ci 3583d0407baSopenharmony_ci If unsure, say N here. 3593d0407baSopenharmony_ci 3603d0407baSopenharmony_ciconfig MTK_IOMMU_V1 3613d0407baSopenharmony_ci bool "MTK IOMMU Version 1 (M4U gen1) Support" 3623d0407baSopenharmony_ci depends on ARM 3633d0407baSopenharmony_ci depends on ARCH_MEDIATEK || COMPILE_TEST 3643d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 3653d0407baSopenharmony_ci select IOMMU_API 3663d0407baSopenharmony_ci select MEMORY 3673d0407baSopenharmony_ci select MTK_SMI 3683d0407baSopenharmony_ci help 3693d0407baSopenharmony_ci Support for the M4U on certain Mediatek SoCs. M4U generation 1 HW is 3703d0407baSopenharmony_ci Multimedia Memory Managememt Unit. This option enables remapping of 3713d0407baSopenharmony_ci DMA memory accesses for the multimedia subsystem. 3723d0407baSopenharmony_ci 3733d0407baSopenharmony_ci if unsure, say N here. 3743d0407baSopenharmony_ci 3753d0407baSopenharmony_ciconfig QCOM_IOMMU 3763d0407baSopenharmony_ci # Note: iommu drivers cannot (yet?) be built as modules 3773d0407baSopenharmony_ci bool "Qualcomm IOMMU Support" 3783d0407baSopenharmony_ci depends on ARCH_QCOM || (COMPILE_TEST && !GENERIC_ATOMIC64) 3793d0407baSopenharmony_ci select IOMMU_API 3803d0407baSopenharmony_ci select IOMMU_IO_PGTABLE_LPAE 3813d0407baSopenharmony_ci select ARM_DMA_USE_IOMMU 3823d0407baSopenharmony_ci help 3833d0407baSopenharmony_ci Support for IOMMU on certain Qualcomm SoCs. 3843d0407baSopenharmony_ci 3853d0407baSopenharmony_ciconfig HYPERV_IOMMU 3863d0407baSopenharmony_ci bool "Hyper-V x2APIC IRQ Handling" 3873d0407baSopenharmony_ci depends on HYPERV && X86 3883d0407baSopenharmony_ci select IOMMU_API 3893d0407baSopenharmony_ci default HYPERV 3903d0407baSopenharmony_ci help 3913d0407baSopenharmony_ci Stub IOMMU driver to handle IRQs as to allow Hyper-V Linux 3923d0407baSopenharmony_ci guests to run with x2APIC mode enabled. 3933d0407baSopenharmony_ci 3943d0407baSopenharmony_ciconfig VIRTIO_IOMMU 3953d0407baSopenharmony_ci tristate "Virtio IOMMU driver" 3963d0407baSopenharmony_ci depends on VIRTIO 3973d0407baSopenharmony_ci depends on ARM64 3983d0407baSopenharmony_ci select IOMMU_API 3993d0407baSopenharmony_ci select INTERVAL_TREE 4003d0407baSopenharmony_ci help 4013d0407baSopenharmony_ci Para-virtualised IOMMU driver with virtio. 4023d0407baSopenharmony_ci 4033d0407baSopenharmony_ci Say Y here if you intend to run this kernel as a guest. 4043d0407baSopenharmony_ci 4053d0407baSopenharmony_ciendif # IOMMU_SUPPORT 406