1ab65ba57SJerry Snitselaar# SPDX-License-Identifier: GPL-2.0-only 2ab65ba57SJerry Snitselaar# Intel IOMMU support 3ab65ba57SJerry Snitselaarconfig DMAR_TABLE 4ab65ba57SJerry Snitselaar bool 5ab65ba57SJerry Snitselaar 655ee5e67SLu Baoluconfig DMAR_PERF 755ee5e67SLu Baolu bool 855ee5e67SLu Baolu 9914ff771SKyung Min Parkconfig DMAR_DEBUG 10914ff771SKyung Min Park bool 11914ff771SKyung Min Park 12ab65ba57SJerry Snitselaarconfig INTEL_IOMMU 13ab65ba57SJerry Snitselaar bool "Support for Intel IOMMU using DMA Remapping Devices" 14cf8e8658SArd Biesheuvel depends on PCI_MSI && ACPI && X86 15ab65ba57SJerry Snitselaar select IOMMU_API 16*d373449dSJason Gunthorpe select GENERIC_PT 17*d373449dSJason Gunthorpe select IOMMU_PT 18*d373449dSJason Gunthorpe select IOMMU_PT_X86_64 19*d373449dSJason Gunthorpe select IOMMU_PT_VTDSS 20ab65ba57SJerry Snitselaar select IOMMU_IOVA 21140f5dedSJoel Granados select IOMMU_IOPF 22f35f22ccSJoao Martins select IOMMUFD_DRIVER if IOMMUFD 23ab65ba57SJerry Snitselaar select NEED_DMA_MAP_STATE 24ab65ba57SJerry Snitselaar select DMAR_TABLE 25ab65ba57SJerry Snitselaar select SWIOTLB 26879fcc6bSLu Baolu select PCI_ATS 270faa19a1SLu Baolu select PCI_PRI 280faa19a1SLu Baolu select PCI_PASID 29ab65ba57SJerry Snitselaar help 30ab65ba57SJerry Snitselaar DMA remapping (DMAR) devices support enables independent address 31ab65ba57SJerry Snitselaar translations for Direct Memory Access (DMA) from devices. 32ab65ba57SJerry Snitselaar These DMA remapping devices are reported via ACPI tables 33ab65ba57SJerry Snitselaar and include PCI device scope covered by these DMA 34ab65ba57SJerry Snitselaar remapping devices. 35ab65ba57SJerry Snitselaar 3601dac2d9SLu Baoluif INTEL_IOMMU 3701dac2d9SLu Baolu 38ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_DEBUGFS 39ab65ba57SJerry Snitselaar bool "Export Intel IOMMU internals in Debugfs" 4001dac2d9SLu Baolu depends on IOMMU_DEBUGFS 41456bb0b9SLu Baolu select DMAR_PERF 42914ff771SKyung Min Park select DMAR_DEBUG 43ab65ba57SJerry Snitselaar help 44ab65ba57SJerry Snitselaar !!!WARNING!!! 45ab65ba57SJerry Snitselaar 46ab65ba57SJerry Snitselaar DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!! 47ab65ba57SJerry Snitselaar 48ab65ba57SJerry Snitselaar Expose Intel IOMMU internals in Debugfs. 49ab65ba57SJerry Snitselaar 50ab65ba57SJerry Snitselaar This option is -NOT- intended for production environments, and should 51ab65ba57SJerry Snitselaar only be enabled for debugging Intel IOMMU. 52ab65ba57SJerry Snitselaar 53ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_SVM 54ab65ba57SJerry Snitselaar bool "Support for Shared Virtual Memory with Intel IOMMU" 5501dac2d9SLu Baolu depends on X86_64 56ab65ba57SJerry Snitselaar select MMU_NOTIFIER 577ba56472SFenghua Yu select IOMMU_SVA 58ab65ba57SJerry Snitselaar help 59ab65ba57SJerry Snitselaar Shared Virtual Memory (SVM) provides a facility for devices 60ab65ba57SJerry Snitselaar to access DMA resources through process address space by 61ab65ba57SJerry Snitselaar means of a Process Address Space ID (PASID). 62ab65ba57SJerry Snitselaar 63ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_DEFAULT_ON 6401dac2d9SLu Baolu bool "Enable Intel DMA Remapping Devices by default" 6501dac2d9SLu Baolu default y 66ab65ba57SJerry Snitselaar help 67ab65ba57SJerry Snitselaar Selecting this option will enable a DMAR device at boot time if 68ab65ba57SJerry Snitselaar one is found. If this option is not selected, DMAR support can 69ab65ba57SJerry Snitselaar be enabled by passing intel_iommu=on to the kernel. 70ab65ba57SJerry Snitselaar 71ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_FLOPPY_WA 72ab65ba57SJerry Snitselaar def_bool y 7301dac2d9SLu Baolu depends on X86 74ab65ba57SJerry Snitselaar help 75ab65ba57SJerry Snitselaar Floppy disk drivers are known to bypass DMA API calls 76ab65ba57SJerry Snitselaar thereby failing to work when IOMMU is enabled. This 77ab65ba57SJerry Snitselaar workaround will setup a 1:1 mapping for the first 78ab65ba57SJerry Snitselaar 16MiB to make floppy (an ISA device) work. 79ab65ba57SJerry Snitselaar 80ab65ba57SJerry Snitselaarconfig INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON 81ab65ba57SJerry Snitselaar bool "Enable Intel IOMMU scalable mode by default" 82792fb43cSLu Baolu default y 83ab65ba57SJerry Snitselaar help 84ab65ba57SJerry Snitselaar Selecting this option will enable by default the scalable mode if 85ab65ba57SJerry Snitselaar hardware presents the capability. The scalable mode is defined in 86ab65ba57SJerry Snitselaar VT-d 3.0. The scalable mode capability could be checked by reading 87ab65ba57SJerry Snitselaar /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option 88ab65ba57SJerry Snitselaar is not selected, scalable mode support could also be enabled by 89ab65ba57SJerry Snitselaar passing intel_iommu=sm_on to the kernel. If not sure, please use 90ab65ba57SJerry Snitselaar the default value. 9101dac2d9SLu Baolu 92a6a5006dSKan Liangconfig INTEL_IOMMU_PERF_EVENTS 93a6a5006dSKan Liang bool "Intel IOMMU performance events" 94cd14b018SMasahiro Yamada default y 95a6a5006dSKan Liang depends on INTEL_IOMMU && PERF_EVENTS 96a6a5006dSKan Liang help 97a6a5006dSKan Liang Selecting this option will enable the performance monitoring 98a6a5006dSKan Liang infrastructure in the Intel IOMMU. It collects information about 99a6a5006dSKan Liang key events occurring during operation of the remapping hardware, 100a6a5006dSKan Liang to aid performance tuning and debug. These are available on modern 101a6a5006dSKan Liang processors which support Intel VT-d 4.0 and later. 102a6a5006dSKan Liang 10301dac2d9SLu Baoluendif # INTEL_IOMMU 104