0001 # SPDX-License-Identifier: GPL-2.0-only
0002 # Intel IOMMU support
0003 config DMAR_TABLE
0004 bool
0005
0006 config DMAR_PERF
0007 bool
0008
0009 config DMAR_DEBUG
0010 bool
0011
0012 config INTEL_IOMMU
0013 bool "Support for Intel IOMMU using DMA Remapping Devices"
0014 depends on PCI_MSI && ACPI && (X86 || IA64)
0015 select DMA_OPS
0016 select IOMMU_API
0017 select IOMMU_IOVA
0018 select NEED_DMA_MAP_STATE
0019 select DMAR_TABLE
0020 select SWIOTLB
0021 select IOASID
0022 select IOMMU_DMA
0023 select PCI_ATS
0024 help
0025 DMA remapping (DMAR) devices support enables independent address
0026 translations for Direct Memory Access (DMA) from devices.
0027 These DMA remapping devices are reported via ACPI tables
0028 and include PCI device scope covered by these DMA
0029 remapping devices.
0030
0031 if INTEL_IOMMU
0032
0033 config INTEL_IOMMU_DEBUGFS
0034 bool "Export Intel IOMMU internals in Debugfs"
0035 depends on IOMMU_DEBUGFS
0036 select DMAR_PERF
0037 select DMAR_DEBUG
0038 help
0039 !!!WARNING!!!
0040
0041 DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
0042
0043 Expose Intel IOMMU internals in Debugfs.
0044
0045 This option is -NOT- intended for production environments, and should
0046 only be enabled for debugging Intel IOMMU.
0047
0048 config INTEL_IOMMU_SVM
0049 bool "Support for Shared Virtual Memory with Intel IOMMU"
0050 depends on X86_64
0051 select PCI_PASID
0052 select PCI_PRI
0053 select MMU_NOTIFIER
0054 select IOASID
0055 select IOMMU_SVA
0056 help
0057 Shared Virtual Memory (SVM) provides a facility for devices
0058 to access DMA resources through process address space by
0059 means of a Process Address Space ID (PASID).
0060
0061 config INTEL_IOMMU_DEFAULT_ON
0062 bool "Enable Intel DMA Remapping Devices by default"
0063 default y
0064 help
0065 Selecting this option will enable a DMAR device at boot time if
0066 one is found. If this option is not selected, DMAR support can
0067 be enabled by passing intel_iommu=on to the kernel.
0068
0069 config INTEL_IOMMU_BROKEN_GFX_WA
0070 bool "Workaround broken graphics drivers (going away soon)"
0071 depends on BROKEN && X86
0072 help
0073 Current Graphics drivers tend to use physical address
0074 for DMA and avoid using DMA APIs. Setting this config
0075 option permits the IOMMU driver to set a unity map for
0076 all the OS-visible memory. Hence the driver can continue
0077 to use physical addresses for DMA, at least until this
0078 option is removed in the 2.6.32 kernel.
0079
0080 config INTEL_IOMMU_FLOPPY_WA
0081 def_bool y
0082 depends on X86
0083 help
0084 Floppy disk drivers are known to bypass DMA API calls
0085 thereby failing to work when IOMMU is enabled. This
0086 workaround will setup a 1:1 mapping for the first
0087 16MiB to make floppy (an ISA device) work.
0088
0089 config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
0090 bool "Enable Intel IOMMU scalable mode by default"
0091 default y
0092 help
0093 Selecting this option will enable by default the scalable mode if
0094 hardware presents the capability. The scalable mode is defined in
0095 VT-d 3.0. The scalable mode capability could be checked by reading
0096 /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
0097 is not selected, scalable mode support could also be enabled by
0098 passing intel_iommu=sm_on to the kernel. If not sure, please use
0099 the default value.
0100
0101 endif # INTEL_IOMMU