| # SPDX-License-Identifier: GPL-2.0-only |
| # Intel IOMMU support |
| config DMAR_TABLE |
| bool |
| |
| config DMAR_PERF |
| bool |
| |
| config DMAR_DEBUG |
| bool |
| |
| config INTEL_IOMMU |
| bool "Support for Intel IOMMU using DMA Remapping Devices" |
| depends on PCI_MSI && ACPI && (X86 || IA64) |
| select DMA_OPS |
| select IOMMU_API |
| select IOMMU_IOVA |
| select NEED_DMA_MAP_STATE |
| select DMAR_TABLE |
| select SWIOTLB |
| select PCI_ATS |
| select PCI_PRI |
| select PCI_PASID |
| help |
| DMA remapping (DMAR) devices support enables independent address |
| translations for Direct Memory Access (DMA) from devices. |
| These DMA remapping devices are reported via ACPI tables |
| and include PCI device scope covered by these DMA |
| remapping devices. |
| |
| if INTEL_IOMMU |
| |
| config INTEL_IOMMU_DEBUGFS |
| bool "Export Intel IOMMU internals in Debugfs" |
| depends on IOMMU_DEBUGFS |
| select DMAR_PERF |
| select DMAR_DEBUG |
| help |
| !!!WARNING!!! |
| |
| DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!! |
| |
| Expose Intel IOMMU internals in Debugfs. |
| |
| This option is -NOT- intended for production environments, and should |
| only be enabled for debugging Intel IOMMU. |
| |
| config INTEL_IOMMU_SVM |
| bool "Support for Shared Virtual Memory with Intel IOMMU" |
| depends on X86_64 |
| select MMU_NOTIFIER |
| select IOMMU_SVA |
| help |
| Shared Virtual Memory (SVM) provides a facility for devices |
| to access DMA resources through process address space by |
| means of a Process Address Space ID (PASID). |
| |
| config INTEL_IOMMU_DEFAULT_ON |
| bool "Enable Intel DMA Remapping Devices by default" |
| default y |
| help |
| Selecting this option will enable a DMAR device at boot time if |
| one is found. If this option is not selected, DMAR support can |
| be enabled by passing intel_iommu=on to the kernel. |
| |
| config INTEL_IOMMU_BROKEN_GFX_WA |
| bool "Workaround broken graphics drivers (going away soon)" |
| depends on BROKEN && X86 |
| help |
| Current Graphics drivers tend to use physical address |
| for DMA and avoid using DMA APIs. Setting this config |
| option permits the IOMMU driver to set a unity map for |
| all the OS-visible memory. Hence the driver can continue |
| to use physical addresses for DMA, at least until this |
| option is removed in the 2.6.32 kernel. |
| |
| config INTEL_IOMMU_FLOPPY_WA |
| def_bool y |
| depends on X86 |
| help |
| Floppy disk drivers are known to bypass DMA API calls |
| thereby failing to work when IOMMU is enabled. This |
| workaround will setup a 1:1 mapping for the first |
| 16MiB to make floppy (an ISA device) work. |
| |
| config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON |
| bool "Enable Intel IOMMU scalable mode by default" |
| default y |
| help |
| Selecting this option will enable by default the scalable mode if |
| hardware presents the capability. The scalable mode is defined in |
| VT-d 3.0. The scalable mode capability could be checked by reading |
| /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option |
| is not selected, scalable mode support could also be enabled by |
| passing intel_iommu=sm_on to the kernel. If not sure, please use |
| the default value. |
| |
| config INTEL_IOMMU_PERF_EVENTS |
| def_bool y |
| bool "Intel IOMMU performance events" |
| depends on INTEL_IOMMU && PERF_EVENTS |
| help |
| Selecting this option will enable the performance monitoring |
| infrastructure in the Intel IOMMU. It collects information about |
| key events occurring during operation of the remapping hardware, |
| to aid performance tuning and debug. These are available on modern |
| processors which support Intel VT-d 4.0 and later. |
| |
| endif # INTEL_IOMMU |