]>
Commit | Line | Data |
---|---|---|
ec8f24b7 | 1 | # SPDX-License-Identifier: GPL-2.0-only |
bd3c2e66 SA |
2 | # The IOVA library may also be used by non-IOMMU_API users |
3 | config IOMMU_IOVA | |
4 | tristate | |
5 | ||
ab493a0f OBC |
6 | # IOMMU_API always gets selected by whoever wants it. |
7 | config IOMMU_API | |
8 | bool | |
b10f127e | 9 | |
8c9c727b JM |
10 | config IOMMUFD_DRIVER |
11 | bool | |
12 | default n | |
13 | ||
68255b62 JR |
14 | menuconfig IOMMU_SUPPORT |
15 | bool "IOMMU Hardware Support" | |
e5144c93 | 16 | depends on MMU |
68255b62 | 17 | default y |
a7f7f624 | 18 | help |
68255b62 JR |
19 | Say Y here if you want to compile device drivers for IO Memory |
20 | Management Units into the kernel. These devices usually allow to | |
21 | remap DMA requests and/or remap interrupts from other devices on the | |
22 | system. | |
23 | ||
24 | if IOMMU_SUPPORT | |
25 | ||
fdb1d7be WD |
26 | menu "Generic IOMMU Pagetable Support" |
27 | ||
28 | # Selected by the actual pagetable implementations | |
29 | config IOMMU_IO_PGTABLE | |
30 | bool | |
31 | ||
e1d3c0fd WD |
32 | config IOMMU_IO_PGTABLE_LPAE |
33 | bool "ARMv7/v8 Long Descriptor Format" | |
34 | select IOMMU_IO_PGTABLE | |
d286a58b | 35 | depends on ARM || ARM64 || COMPILE_TEST |
1b0b5f50 | 36 | depends on !GENERIC_ATOMIC64 # for cmpxchg64() |
e1d3c0fd WD |
37 | help |
38 | Enable support for the ARM long descriptor pagetable format. | |
39 | This allocator supports 4K/2M/1G, 16K/32M and 64K/512M page | |
40 | sizes at both stage-1 and stage-2, as well as address spaces | |
41 | up to 48-bits in size. | |
42 | ||
fe4b991d WD |
43 | config IOMMU_IO_PGTABLE_LPAE_SELFTEST |
44 | bool "LPAE selftests" | |
45 | depends on IOMMU_IO_PGTABLE_LPAE | |
46 | help | |
47 | Enable self-tests for LPAE page table allocator. This performs | |
48 | a series of page-table consistency checks during boot. | |
49 | ||
50 | If unsure, say N here. | |
51 | ||
e5fc9753 RM |
52 | config IOMMU_IO_PGTABLE_ARMV7S |
53 | bool "ARMv7/v8 Short Descriptor Format" | |
54 | select IOMMU_IO_PGTABLE | |
48e6f765 | 55 | depends on ARM || ARM64 || COMPILE_TEST |
e5fc9753 RM |
56 | help |
57 | Enable support for the ARM Short-descriptor pagetable format. | |
58 | This supports 32-bit virtual and physical addresses mapped using | |
59 | 2-level tables with 4KB pages/1MB sections, and contiguous entries | |
60 | for 64KB pages/16MB supersections if indicated by the IOMMU driver. | |
61 | ||
62 | config IOMMU_IO_PGTABLE_ARMV7S_SELFTEST | |
63 | bool "ARMv7s selftests" | |
64 | depends on IOMMU_IO_PGTABLE_ARMV7S | |
65 | help | |
66 | Enable self-tests for ARMv7s page table allocator. This performs | |
67 | a series of page-table consistency checks during boot. | |
68 | ||
69 | If unsure, say N here. | |
70 | ||
745ef109 JG |
71 | config IOMMU_IO_PGTABLE_DART |
72 | bool "Apple DART Formats" | |
73 | select IOMMU_IO_PGTABLE | |
d286a58b | 74 | depends on ARM64 || COMPILE_TEST |
1b0b5f50 | 75 | depends on !GENERIC_ATOMIC64 # for cmpxchg64() |
745ef109 JG |
76 | help |
77 | Enable support for the Apple DART pagetable formats. These include | |
78 | the t8020 and t6000/t8110 DART formats used in Apple M1/M2 family | |
79 | SoCs. | |
80 | ||
81 | If unsure, say N here. | |
82 | ||
fdb1d7be WD |
83 | endmenu |
84 | ||
bad614b2 GH |
85 | config IOMMU_DEBUGFS |
86 | bool "Export IOMMU internals in DebugFS" | |
87 | depends on DEBUG_FS | |
88 | help | |
89 | Allows exposure of IOMMU device internals. This option enables | |
90 | the use of debugfs by IOMMU drivers as required. Devices can, | |
91 | at initialization time, cause the IOMMU code to create a top-level | |
92 | debug/iommu directory, and then populate a subdirectory with | |
93 | entries as required. | |
94 | ||
e96763ec RM |
95 | choice |
96 | prompt "IOMMU default domain type" | |
58d11317 | 97 | depends on IOMMU_API |
4bbdb725 | 98 | default IOMMU_DEFAULT_DMA_LAZY if X86 || S390 |
e96763ec | 99 | default IOMMU_DEFAULT_DMA_STRICT |
d0432345 | 100 | help |
e96763ec RM |
101 | Choose the type of IOMMU domain used to manage DMA API usage by |
102 | device drivers. The options here typically represent different | |
103 | levels of tradeoff between robustness/security and performance, | |
104 | depending on the IOMMU driver. Not all IOMMUs support all options. | |
105 | This choice can be overridden at boot via the command line, and for | |
106 | some devices also at runtime via sysfs. | |
58d11317 | 107 | |
e96763ec | 108 | If unsure, keep the default. |
712d8f20 | 109 | |
e96763ec RM |
110 | config IOMMU_DEFAULT_DMA_STRICT |
111 | bool "Translated - Strict" | |
712d8f20 | 112 | help |
e96763ec RM |
113 | Trusted devices use translation to restrict their access to only |
114 | DMA-mapped pages, with strict TLB invalidation on unmap. Equivalent | |
115 | to passing "iommu.passthrough=0 iommu.strict=1" on the command line. | |
712d8f20 | 116 | |
e96763ec RM |
117 | Untrusted devices always use this mode, with an additional layer of |
118 | bounce-buffering such that they cannot gain access to any unrelated | |
119 | data within a mapped page. | |
712d8f20 | 120 | |
e96763ec RM |
121 | config IOMMU_DEFAULT_DMA_LAZY |
122 | bool "Translated - Lazy" | |
712d8f20 | 123 | help |
e96763ec RM |
124 | Trusted devices use translation to restrict their access to only |
125 | DMA-mapped pages, but with "lazy" batched TLB invalidation. This | |
126 | mode allows higher performance with some IOMMUs due to reduced TLB | |
127 | flushing, but at the cost of reduced isolation since devices may be | |
128 | able to access memory for some time after it has been unmapped. | |
129 | Equivalent to passing "iommu.passthrough=0 iommu.strict=0" on the | |
130 | command line. | |
131 | ||
132 | If this mode is not supported by the IOMMU driver, the effective | |
133 | runtime default will fall back to IOMMU_DEFAULT_DMA_STRICT. | |
712d8f20 | 134 | |
e96763ec RM |
135 | config IOMMU_DEFAULT_PASSTHROUGH |
136 | bool "Passthrough" | |
712d8f20 | 137 | help |
e96763ec RM |
138 | Trusted devices are identity-mapped, giving them unrestricted access |
139 | to memory with minimal performance overhead. Equivalent to passing | |
140 | "iommu.passthrough=1" (historically "iommu=pt") on the command line. | |
141 | ||
142 | If this mode is not supported by the IOMMU driver, the effective | |
143 | runtime default will fall back to IOMMU_DEFAULT_DMA_STRICT. | |
712d8f20 ZL |
144 | |
145 | endchoice | |
58d11317 | 146 | |
4e0ee78f | 147 | config OF_IOMMU |
d0432345 KK |
148 | def_bool y |
149 | depends on OF && IOMMU_API | |
4e0ee78f | 150 | |
0db2e5d1 RM |
151 | # IOMMU-agnostic DMA-mapping layer |
152 | config IOMMU_DMA | |
4bbdb725 | 153 | def_bool ARM64 || X86 || S390 |
2f9237d4 | 154 | select DMA_OPS |
0db2e5d1 RM |
155 | select IOMMU_API |
156 | select IOMMU_IOVA | |
ece6e6f0 | 157 | select IRQ_MSI_IOMMU |
59a68eb8 | 158 | select NEED_SG_DMA_LENGTH |
861370f4 | 159 | select NEED_SG_DMA_FLAGS if SWIOTLB |
0db2e5d1 | 160 | |
7ba56472 FY |
161 | # Shared Virtual Addressing |
162 | config IOMMU_SVA | |
8f23f5db | 163 | select IOMMU_MM_DATA |
cfc78dfd | 164 | bool |
cfc78dfd | 165 | |
17c51a0e LB |
166 | config IOMMU_IOPF |
167 | bool | |
168 | ||
695093e3 VS |
169 | config FSL_PAMU |
170 | bool "Freescale IOMMU support" | |
a4d98fb3 | 171 | depends on PCI |
af29d9fa | 172 | depends on PHYS_64BIT |
a0d284d2 | 173 | depends on PPC_E500MC || (COMPILE_TEST && PPC) |
695093e3 VS |
174 | select IOMMU_API |
175 | select GENERIC_ALLOCATOR | |
176 | help | |
177 | Freescale PAMU support. PAMU is the IOMMU present on Freescale QorIQ platforms. | |
178 | PAMU can authorize memory access, remap the memory address, and remap I/O | |
179 | transaction types. | |
180 | ||
b10f127e OBC |
181 | # MSM IOMMU support |
182 | config MSM_IOMMU | |
183 | bool "MSM IOMMU Support" | |
477ab7a1 | 184 | depends on ARM |
18368ee2 | 185 | depends on ARCH_QCOM || COMPILE_TEST |
b10f127e | 186 | select IOMMU_API |
c9220fbd | 187 | select IOMMU_IO_PGTABLE_ARMV7S |
b10f127e OBC |
188 | help |
189 | Support for the IOMMUs found on certain Qualcomm SOCs. | |
190 | These IOMMUs allow virtualization of the address space used by most | |
191 | cores within the multimedia subsystem. | |
192 | ||
193 | If unsure, say N here. | |
194 | ||
cbe94c6e | 195 | source "drivers/iommu/amd/Kconfig" |
ab65ba57 | 196 | source "drivers/iommu/intel/Kconfig" |
2ff4bed7 | 197 | source "drivers/iommu/iommufd/Kconfig" |
04618252 | 198 | |
d3f13810 | 199 | config IRQ_REMAP |
a446e219 KC |
200 | bool "Support for Interrupt Remapping" |
201 | depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI | |
70bad345 | 202 | select DMAR_TABLE if INTEL_IOMMU |
a7f7f624 | 203 | help |
166e9278 OBC |
204 | Supports Interrupt remapping for IO-APIC and MSI devices. |
205 | To use x2apic mode in the CPU's which support x2APIC enhancements or | |
206 | to support platforms with CPU's having > 8 bit APIC ID, say Y. | |
68255b62 | 207 | |
fcf3a6ef OBC |
208 | # OMAP IOMMU support |
209 | config OMAP_IOMMU | |
210 | bool "OMAP IOMMU Support" | |
477ab7a1 | 211 | depends on ARCH_OMAP2PLUS || COMPILE_TEST |
fcf3a6ef | 212 | select IOMMU_API |
a7f7f624 | 213 | help |
06b718c0 GH |
214 | The OMAP3 media platform drivers depend on iommu support, |
215 | if you need them say Y here. | |
fcf3a6ef | 216 | |
fcf3a6ef | 217 | config OMAP_IOMMU_DEBUG |
61c75352 SA |
218 | bool "Export OMAP IOMMU internals in DebugFS" |
219 | depends on OMAP_IOMMU && DEBUG_FS | |
a7f7f624 | 220 | help |
61c75352 SA |
221 | Select this to see extensive information about |
222 | the internal state of OMAP IOMMU in debugfs. | |
fcf3a6ef | 223 | |
61c75352 | 224 | Say N unless you know you need this. |
fcf3a6ef | 225 | |
c68a2921 DK |
226 | config ROCKCHIP_IOMMU |
227 | bool "Rockchip IOMMU Support" | |
11175886 | 228 | depends on ARCH_ROCKCHIP || COMPILE_TEST |
c68a2921 DK |
229 | select IOMMU_API |
230 | select ARM_DMA_USE_IOMMU | |
231 | help | |
232 | Support for IOMMUs found on Rockchip rk32xx SOCs. | |
233 | These IOMMUs allow virtualization of the address space used by most | |
234 | cores within the multimedia subsystem. | |
235 | Say Y here if you are using a Rockchip SoC that includes an IOMMU | |
236 | device. | |
fcf3a6ef | 237 | |
4100b8c2 MR |
238 | config SUN50I_IOMMU |
239 | bool "Allwinner H6 IOMMU Support" | |
c7451e49 | 240 | depends on HAS_DMA |
4100b8c2 MR |
241 | depends on ARCH_SUNXI || COMPILE_TEST |
242 | select ARM_DMA_USE_IOMMU | |
243 | select IOMMU_API | |
4100b8c2 MR |
244 | help |
245 | Support for the IOMMU introduced in the Allwinner H6 SoCs. | |
246 | ||
7a31f6f4 | 247 | config TEGRA_IOMMU_SMMU |
89184651 TR |
248 | bool "NVIDIA Tegra SMMU Support" |
249 | depends on ARCH_TEGRA | |
250 | depends on TEGRA_AHB | |
251 | depends on TEGRA_MC | |
7a31f6f4 HD |
252 | select IOMMU_API |
253 | help | |
89184651 | 254 | This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra |
588c43a7 | 255 | SoCs (Tegra30 up to Tegra210). |
7a31f6f4 | 256 | |
2a96536e KC |
257 | config EXYNOS_IOMMU |
258 | bool "Exynos IOMMU Support" | |
b4ceb4a5 | 259 | depends on ARCH_EXYNOS || COMPILE_TEST |
db3a7fd7 | 260 | depends on !CPU_BIG_ENDIAN # revisit driver if we can enable big-endian ptes |
2a96536e | 261 | select IOMMU_API |
4802c1d0 | 262 | select ARM_DMA_USE_IOMMU |
2a96536e | 263 | help |
5455d700 SK |
264 | Support for the IOMMU (System MMU) of Samsung Exynos application |
265 | processor family. This enables H/W multimedia accelerators to see | |
266 | non-linear physical memory chunks as linear memory in their | |
267 | address space. | |
2a96536e KC |
268 | |
269 | If unsure, say N here. | |
270 | ||
271 | config EXYNOS_IOMMU_DEBUG | |
272 | bool "Debugging log for Exynos IOMMU" | |
273 | depends on EXYNOS_IOMMU | |
274 | help | |
275 | Select this to see the detailed log message that shows what | |
5455d700 | 276 | happens in the IOMMU driver. |
2a96536e | 277 | |
5455d700 | 278 | Say N unless you need kernel log message for IOMMU debugging. |
2a96536e | 279 | |
d25a2a16 LP |
280 | config IPMMU_VMSA |
281 | bool "Renesas VMSA-compatible IPMMU" | |
d286a58b | 282 | depends on ARCH_RENESAS || COMPILE_TEST |
e332003b | 283 | depends on ARM || ARM64 || COMPILE_TEST |
d286a58b | 284 | depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE |
d25a2a16 | 285 | select IOMMU_API |
f20ed39f | 286 | select IOMMU_IO_PGTABLE_LPAE |
d25a2a16 LP |
287 | select ARM_DMA_USE_IOMMU |
288 | help | |
15021d36 | 289 | Support for the Renesas VMSA-compatible IPMMU found in the R-Mobile |
d714aaa7 | 290 | APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs. |
d25a2a16 LP |
291 | |
292 | If unsure, say N. | |
293 | ||
4e13c1ac AK |
294 | config SPAPR_TCE_IOMMU |
295 | bool "sPAPR TCE IOMMU Support" | |
9dd124b6 | 296 | depends on PPC_POWERNV || PPC_PSERIES |
4e13c1ac AK |
297 | select IOMMU_API |
298 | help | |
299 | Enables bits of IOMMU API required by VFIO. The iommu_ops | |
300 | is not implemented as it is not necessary for VFIO. | |
301 | ||
46d1fb07 SP |
302 | config APPLE_DART |
303 | tristate "Apple DART IOMMU Support" | |
d286a58b RM |
304 | depends on ARCH_APPLE || COMPILE_TEST |
305 | depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_DART | |
46d1fb07 | 306 | select IOMMU_API |
745ef109 | 307 | select IOMMU_IO_PGTABLE_DART |
46d1fb07 SP |
308 | default ARCH_APPLE |
309 | help | |
310 | Support for Apple DART (Device Address Resolution Table) IOMMUs | |
311 | found in Apple ARM SoCs like the M1. | |
312 | This IOMMU is required for most peripherals using DMA to access | |
313 | the main memory. | |
314 | ||
315 | Say Y here if you are using an Apple SoC. | |
316 | ||
48ec83bc | 317 | # ARM IOMMU support |
45ae7cff | 318 | config ARM_SMMU |
cd221bd2 | 319 | tristate "ARM Ltd. System MMU (SMMU) Support" |
d286a58b RM |
320 | depends on ARM64 || ARM || COMPILE_TEST |
321 | depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE | |
45ae7cff | 322 | select IOMMU_API |
518f7136 | 323 | select IOMMU_IO_PGTABLE_LPAE |
45ae7cff WD |
324 | select ARM_DMA_USE_IOMMU if ARM |
325 | help | |
326 | Support for implementations of the ARM System MMU architecture | |
518f7136 | 327 | versions 1 and 2. |
45ae7cff WD |
328 | |
329 | Say Y here if your SoC includes an IOMMU device implementing | |
330 | the ARM SMMU architecture. | |
331 | ||
cd221bd2 WD |
332 | config ARM_SMMU_LEGACY_DT_BINDINGS |
333 | bool "Support the legacy \"mmu-masters\" devicetree bindings" | |
334 | depends on ARM_SMMU=y && OF | |
335 | help | |
336 | Support for the badly designed and deprecated "mmu-masters" | |
337 | devicetree bindings. This allows some DMA masters to attach | |
338 | to the SMMU but does not provide any support via the DMA API. | |
339 | If you're lucky, you might be able to get VFIO up and running. | |
340 | ||
341 | If you say Y here then you'll make me very sad. Instead, say N | |
342 | and move your firmware to the utopian future that was 2016. | |
343 | ||
954a03be DA |
344 | config ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT |
345 | bool "Default to disabling bypass on ARM SMMU v1 and v2" | |
346 | depends on ARM_SMMU | |
347 | default y | |
348 | help | |
349 | Say Y here to (by default) disable bypass streams such that | |
350 | incoming transactions from devices that are not attached to | |
351 | an iommu domain will report an abort back to the device and | |
352 | will not be allowed to pass through the SMMU. | |
353 | ||
354 | Any old kernels that existed before this KConfig was | |
355 | introduced would default to _allowing_ bypass (AKA the | |
356 | equivalent of NO for this config). However the default for | |
357 | this option is YES because the old behavior is insecure. | |
358 | ||
359 | There are few reasons to allow unmatched stream bypass, and | |
360 | even fewer good ones. If saying YES here breaks your board | |
361 | you should work on fixing your board. This KConfig option | |
362 | is expected to be removed in the future and we'll simply | |
363 | hardcode the bypass disable in the code. | |
364 | ||
365 | NOTE: the kernel command line parameter | |
366 | 'arm-smmu.disable_bypass' will continue to override this | |
367 | config. | |
368 | ||
0f0f80d9 AB |
369 | config ARM_SMMU_QCOM |
370 | def_tristate y | |
371 | depends on ARM_SMMU && ARCH_QCOM | |
372 | select QCOM_SCM | |
373 | help | |
374 | When running on a Qualcomm platform that has the custom variant | |
375 | of the ARM SMMU, this needs to be built into the SMMU driver. | |
376 | ||
b9b721d1 SPR |
377 | config ARM_SMMU_QCOM_DEBUG |
378 | bool "ARM SMMU QCOM implementation defined debug support" | |
379 | depends on ARM_SMMU_QCOM | |
380 | help | |
381 | Support for implementation specific debug features in ARM SMMU | |
382 | hardware found in QTI platforms. | |
383 | ||
384 | Say Y here to enable debug for issues such as TLB sync timeouts | |
385 | which requires implementation defined register dumps. | |
386 | ||
48ec83bc | 387 | config ARM_SMMU_V3 |
2852ad05 | 388 | tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support" |
08d4ca2a | 389 | depends on ARM64 |
48ec83bc WD |
390 | select IOMMU_API |
391 | select IOMMU_IO_PGTABLE_LPAE | |
13e7accb | 392 | select GENERIC_MSI_IRQ |
48ec83bc WD |
393 | help |
394 | Support for implementations of the ARM System MMU architecture | |
395 | version 3 providing translation support to a PCIe root complex. | |
396 | ||
397 | Say Y here if your system includes an IOMMU device implementing | |
398 | the ARM SMMUv3 architecture. | |
399 | ||
3f1ce8e8 JPB |
400 | config ARM_SMMU_V3_SVA |
401 | bool "Shared Virtual Addressing support for the ARM SMMUv3" | |
402 | depends on ARM_SMMU_V3 | |
7ba56472 | 403 | select IOMMU_SVA |
17c51a0e | 404 | select IOMMU_IOPF |
32784a95 | 405 | select MMU_NOTIFIER |
3f1ce8e8 JPB |
406 | help |
407 | Support for sharing process address spaces with devices using the | |
408 | SMMUv3. | |
409 | ||
410 | Say Y here if your system supports SVA extensions such as PCIe PASID | |
411 | and PRI. | |
412 | ||
8128f23c GS |
413 | config S390_IOMMU |
414 | def_bool y if S390 && PCI | |
415 | depends on S390 && PCI | |
416 | select IOMMU_API | |
417 | help | |
418 | Support for the IOMMU API for s390 PCI devices. | |
419 | ||
0df4fabe | 420 | config MTK_IOMMU |
18d8c74e | 421 | tristate "MediaTek IOMMU Support" |
0df4fabe | 422 | depends on ARCH_MEDIATEK || COMPILE_TEST |
1928832f | 423 | select ARM_DMA_USE_IOMMU |
0df4fabe | 424 | select IOMMU_API |
0df4fabe YW |
425 | select IOMMU_IO_PGTABLE_ARMV7S |
426 | select MEMORY | |
427 | select MTK_SMI | |
428 | help | |
429 | Support for the M4U on certain Mediatek SOCs. M4U is MultiMedia | |
430 | Memory Management Unit. This option enables remapping of DMA memory | |
431 | accesses for the multimedia subsystem. | |
432 | ||
433 | If unsure, say N here. | |
434 | ||
b17336c5 | 435 | config MTK_IOMMU_V1 |
8de000cf | 436 | tristate "MediaTek IOMMU Version 1 (M4U gen1) Support" |
b17336c5 HZ |
437 | depends on ARM |
438 | depends on ARCH_MEDIATEK || COMPILE_TEST | |
439 | select ARM_DMA_USE_IOMMU | |
440 | select IOMMU_API | |
441 | select MEMORY | |
442 | select MTK_SMI | |
b17336c5 HZ |
443 | help |
444 | Support for the M4U on certain Mediatek SoCs. M4U generation 1 HW is | |
445 | Multimedia Memory Managememt Unit. This option enables remapping of | |
446 | DMA memory accesses for the multimedia subsystem. | |
447 | ||
448 | if unsure, say N here. | |
449 | ||
0ae349a0 RC |
450 | config QCOM_IOMMU |
451 | # Note: iommu drivers cannot (yet?) be built as modules | |
452 | bool "Qualcomm IOMMU Support" | |
d286a58b RM |
453 | depends on ARCH_QCOM || COMPILE_TEST |
454 | depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE | |
424953cf | 455 | select QCOM_SCM |
0ae349a0 RC |
456 | select IOMMU_API |
457 | select IOMMU_IO_PGTABLE_LPAE | |
458 | select ARM_DMA_USE_IOMMU | |
459 | help | |
460 | Support for IOMMU on certain Qualcomm SoCs. | |
461 | ||
29217a47 | 462 | config HYPERV_IOMMU |
fea858dc | 463 | bool "Hyper-V IRQ Handling" |
d7f0b2e4 | 464 | depends on HYPERV && X86 |
29217a47 LT |
465 | select IOMMU_API |
466 | default HYPERV | |
467 | help | |
fea858dc NDN |
468 | Stub IOMMU driver to handle IRQs to support Hyper-V Linux |
469 | guest and root partitions. | |
29217a47 | 470 | |
edcd69ab | 471 | config VIRTIO_IOMMU |
fa4afd78 JPB |
472 | tristate "Virtio IOMMU driver" |
473 | depends on VIRTIO | |
8ce4904b | 474 | depends on (ARM64 || X86) |
edcd69ab JPB |
475 | select IOMMU_API |
476 | select INTERVAL_TREE | |
3cf48554 | 477 | select ACPI_VIOT if ACPI |
edcd69ab JPB |
478 | help |
479 | Para-virtualised IOMMU driver with virtio. | |
480 | ||
481 | Say Y here if you intend to run this kernel as a guest. | |
482 | ||
b23e4fc4 CZ |
483 | config SPRD_IOMMU |
484 | tristate "Unisoc IOMMU Support" | |
485 | depends on ARCH_SPRD || COMPILE_TEST | |
486 | select IOMMU_API | |
487 | help | |
488 | Support for IOMMU on Unisoc's SoCs, this IOMMU can be used by | |
489 | Unisoc's multimedia devices, such as display, Image codec(jpeg) | |
490 | and a few signal processors, including VSP(video), GSP(graphic), | |
491 | ISP(image), and CPP(camera pixel processor), etc. | |
492 | ||
493 | Say Y here if you want to use the multimedia devices listed above. | |
494 | ||
68255b62 | 495 | endif # IOMMU_SUPPORT |