1*ab65ba57SJerry Snitselaar# SPDX-License-Identifier: GPL-2.0-only 2*ab65ba57SJerry Snitselaar# Intel IOMMU support 3*ab65ba57SJerry Snitselaarconfig DMAR_TABLE 4*ab65ba57SJerry Snitselaar bool 5*ab65ba57SJerry Snitselaar 6*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU 7*ab65ba57SJerry Snitselaar bool "Support for Intel IOMMU using DMA Remapping Devices" 8*ab65ba57SJerry Snitselaar depends on PCI_MSI && ACPI && (X86 || IA64) 9*ab65ba57SJerry Snitselaar select IOMMU_API 10*ab65ba57SJerry Snitselaar select IOMMU_IOVA 11*ab65ba57SJerry Snitselaar select NEED_DMA_MAP_STATE 12*ab65ba57SJerry Snitselaar select DMAR_TABLE 13*ab65ba57SJerry Snitselaar select SWIOTLB 14*ab65ba57SJerry Snitselaar select IOASID 15*ab65ba57SJerry Snitselaar help 16*ab65ba57SJerry Snitselaar DMA remapping (DMAR) devices support enables independent address 17*ab65ba57SJerry Snitselaar translations for Direct Memory Access (DMA) from devices. 18*ab65ba57SJerry Snitselaar These DMA remapping devices are reported via ACPI tables 19*ab65ba57SJerry Snitselaar and include PCI device scope covered by these DMA 20*ab65ba57SJerry Snitselaar remapping devices. 21*ab65ba57SJerry Snitselaar 22*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_DEBUGFS 23*ab65ba57SJerry Snitselaar bool "Export Intel IOMMU internals in Debugfs" 24*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU && IOMMU_DEBUGFS 25*ab65ba57SJerry Snitselaar help 26*ab65ba57SJerry Snitselaar !!!WARNING!!! 27*ab65ba57SJerry Snitselaar 28*ab65ba57SJerry Snitselaar DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!! 29*ab65ba57SJerry Snitselaar 30*ab65ba57SJerry Snitselaar Expose Intel IOMMU internals in Debugfs. 31*ab65ba57SJerry Snitselaar 32*ab65ba57SJerry Snitselaar This option is -NOT- intended for production environments, and should 33*ab65ba57SJerry Snitselaar only be enabled for debugging Intel IOMMU. 34*ab65ba57SJerry Snitselaar 35*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_SVM 36*ab65ba57SJerry Snitselaar bool "Support for Shared Virtual Memory with Intel IOMMU" 37*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU && X86_64 38*ab65ba57SJerry Snitselaar select PCI_PASID 39*ab65ba57SJerry Snitselaar select PCI_PRI 40*ab65ba57SJerry Snitselaar select MMU_NOTIFIER 41*ab65ba57SJerry Snitselaar select IOASID 42*ab65ba57SJerry Snitselaar help 43*ab65ba57SJerry Snitselaar Shared Virtual Memory (SVM) provides a facility for devices 44*ab65ba57SJerry Snitselaar to access DMA resources through process address space by 45*ab65ba57SJerry Snitselaar means of a Process Address Space ID (PASID). 46*ab65ba57SJerry Snitselaar 47*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_DEFAULT_ON 48*ab65ba57SJerry Snitselaar def_bool y 49*ab65ba57SJerry Snitselaar prompt "Enable Intel DMA Remapping Devices by default" 50*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU 51*ab65ba57SJerry Snitselaar help 52*ab65ba57SJerry Snitselaar Selecting this option will enable a DMAR device at boot time if 53*ab65ba57SJerry Snitselaar one is found. If this option is not selected, DMAR support can 54*ab65ba57SJerry Snitselaar be enabled by passing intel_iommu=on to the kernel. 55*ab65ba57SJerry Snitselaar 56*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_BROKEN_GFX_WA 57*ab65ba57SJerry Snitselaar bool "Workaround broken graphics drivers (going away soon)" 58*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU && BROKEN && X86 59*ab65ba57SJerry Snitselaar help 60*ab65ba57SJerry Snitselaar Current Graphics drivers tend to use physical address 61*ab65ba57SJerry Snitselaar for DMA and avoid using DMA APIs. Setting this config 62*ab65ba57SJerry Snitselaar option permits the IOMMU driver to set a unity map for 63*ab65ba57SJerry Snitselaar all the OS-visible memory. Hence the driver can continue 64*ab65ba57SJerry Snitselaar to use physical addresses for DMA, at least until this 65*ab65ba57SJerry Snitselaar option is removed in the 2.6.32 kernel. 66*ab65ba57SJerry Snitselaar 67*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_FLOPPY_WA 68*ab65ba57SJerry Snitselaar def_bool y 69*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU && X86 70*ab65ba57SJerry Snitselaar help 71*ab65ba57SJerry Snitselaar Floppy disk drivers are known to bypass DMA API calls 72*ab65ba57SJerry Snitselaar thereby failing to work when IOMMU is enabled. This 73*ab65ba57SJerry Snitselaar workaround will setup a 1:1 mapping for the first 74*ab65ba57SJerry Snitselaar 16MiB to make floppy (an ISA device) work. 75*ab65ba57SJerry Snitselaar 76*ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON 77*ab65ba57SJerry Snitselaar bool "Enable Intel IOMMU scalable mode by default" 78*ab65ba57SJerry Snitselaar depends on INTEL_IOMMU 79*ab65ba57SJerry Snitselaar help 80*ab65ba57SJerry Snitselaar Selecting this option will enable by default the scalable mode if 81*ab65ba57SJerry Snitselaar hardware presents the capability. The scalable mode is defined in 82*ab65ba57SJerry Snitselaar VT-d 3.0. The scalable mode capability could be checked by reading 83*ab65ba57SJerry Snitselaar /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option 84*ab65ba57SJerry Snitselaar is not selected, scalable mode support could also be enabled by 85*ab65ba57SJerry Snitselaar passing intel_iommu=sm_on to the kernel. If not sure, please use 86*ab65ba57SJerry Snitselaar the default value. 87