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