@@ -192,14 +192,14 @@ config MSM_IOMMU
192192 If unsure, say N here.
193193
194194source "drivers/iommu/amd/Kconfig"
195+ source "drivers/iommu/arm/Kconfig"
195196source "drivers/iommu/intel/Kconfig"
196197source "drivers/iommu/iommufd/Kconfig"
197198source "drivers/iommu/riscv/Kconfig"
198199
199200config IRQ_REMAP
200201 bool "Support for Interrupt Remapping"
201202 depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI
202- select DMAR_TABLE if INTEL_IOMMU
203203 help
204204 Supports Interrupt remapping for IO-APIC and MSI devices.
205205 To use x2apic mode in the CPU's which support x2APIC enhancements or
@@ -314,150 +314,6 @@ config APPLE_DART
314314
315315 Say Y here if you are using an Apple SoC.
316316
317- # ARM IOMMU support
318- config ARM_SMMU
319- tristate "ARM Ltd. System MMU (SMMU) Support"
320- depends on ARM64 || ARM || COMPILE_TEST
321- depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
322- select IOMMU_API
323- select IOMMU_IO_PGTABLE_LPAE
324- select ARM_DMA_USE_IOMMU if ARM
325- help
326- Support for implementations of the ARM System MMU architecture
327- versions 1 and 2.
328-
329- Say Y here if your SoC includes an IOMMU device implementing
330- the ARM SMMU architecture.
331-
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-
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-
369- config ARM_SMMU_MMU_500_CPRE_ERRATA
370- bool "Enable errata workaround for CPRE in SMMU reset path"
371- depends on ARM_SMMU
372- default y
373- help
374- Say Y here (by default) to apply workaround to disable
375- MMU-500's next-page prefetcher for sake of 4 known errata.
376-
377- Say N here only when it is sure that any errata related to
378- prefetch enablement are not applicable on the platform.
379- Refer silicon-errata.rst for info on errata IDs.
380-
381- config ARM_SMMU_QCOM
382- def_tristate y
383- depends on ARM_SMMU && ARCH_QCOM
384- select QCOM_SCM
385- help
386- When running on a Qualcomm platform that has the custom variant
387- of the ARM SMMU, this needs to be built into the SMMU driver.
388-
389- config ARM_SMMU_QCOM_DEBUG
390- bool "ARM SMMU QCOM implementation defined debug support"
391- depends on ARM_SMMU_QCOM=y
392- help
393- Support for implementation specific debug features in ARM SMMU
394- hardware found in QTI platforms. This include support for
395- the Translation Buffer Units (TBU) that can be used to obtain
396- additional information when debugging memory management issues
397- like context faults.
398-
399- Say Y here to enable debug for issues such as context faults
400- or TLB sync timeouts which requires implementation defined
401- register dumps.
402-
403- config ARM_SMMU_V3
404- tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support"
405- depends on ARM64
406- select IOMMU_API
407- select IOMMU_IO_PGTABLE_LPAE
408- select GENERIC_MSI_IRQ
409- select IOMMUFD_DRIVER if IOMMUFD
410- help
411- Support for implementations of the ARM System MMU architecture
412- version 3 providing translation support to a PCIe root complex.
413-
414- Say Y here if your system includes an IOMMU device implementing
415- the ARM SMMUv3 architecture.
416-
417- if ARM_SMMU_V3
418- config ARM_SMMU_V3_SVA
419- bool "Shared Virtual Addressing support for the ARM SMMUv3"
420- select IOMMU_SVA
421- select IOMMU_IOPF
422- select MMU_NOTIFIER
423- help
424- Support for sharing process address spaces with devices using the
425- SMMUv3.
426-
427- Say Y here if your system supports SVA extensions such as PCIe PASID
428- and PRI.
429-
430- config ARM_SMMU_V3_IOMMUFD
431- bool "Enable IOMMUFD features for ARM SMMUv3 (EXPERIMENTAL)"
432- depends on IOMMUFD
433- help
434- Support for IOMMUFD features intended to support virtual machines
435- with accelerated virtual IOMMUs.
436-
437- Say Y here if you are doing development and testing on this feature.
438-
439- config ARM_SMMU_V3_KUNIT_TEST
440- tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
441- depends on KUNIT
442- depends on ARM_SMMU_V3_SVA
443- default KUNIT_ALL_TESTS
444- help
445- Enable this option to unit-test arm-smmu-v3 driver functions.
446-
447- If unsure, say N.
448-
449- config TEGRA241_CMDQV
450- bool "NVIDIA Tegra241 CMDQ-V extension support for ARM SMMUv3"
451- depends on ACPI
452- help
453- Support for NVIDIA CMDQ-Virtualization extension for ARM SMMUv3. The
454- CMDQ-V extension is similar to v3.3 ECMDQ for multi command queues
455- support, except with virtualization capabilities.
456-
457- Say Y here if your system is NVIDIA Tegra241 (Grace) or it has the same
458- CMDQ-V extension.
459- endif
460-
461317config S390_IOMMU
462318 def_bool y if S390 && PCI
463319 depends on S390 && PCI
@@ -494,18 +350,6 @@ config MTK_IOMMU_V1
494350
495351 if unsure, say N here.
496352
497- config QCOM_IOMMU
498- # Note: iommu drivers cannot (yet?) be built as modules
499- bool "Qualcomm IOMMU Support"
500- depends on ARCH_QCOM || COMPILE_TEST
501- depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
502- select QCOM_SCM
503- select IOMMU_API
504- select IOMMU_IO_PGTABLE_LPAE
505- select ARM_DMA_USE_IOMMU
506- help
507- Support for IOMMU on certain Qualcomm SoCs.
508-
509353config HYPERV_IOMMU
510354 bool "Hyper-V IRQ Handling"
511355 depends on HYPERV && X86
0 commit comments