xref: /linux/drivers/iommu/intel/Kconfig (revision ab65ba57e3acb55920999f96a6152228b52a2f49)
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