# SPDX-License-Identifier: GPL-2.0-only
# Intel IOMMU support
config DMAR_TABLE
	bool

config INTEL_IOMMU
	bool "Support for Intel IOMMU using DMA Remapping Devices"
	depends on PCI_MSI && ACPI && (X86 || IA64)
	select DMA_OPS
	select IOMMU_API
	select IOMMU_IOVA
	select NEED_DMA_MAP_STATE
	select DMAR_TABLE
	select SWIOTLB
	select IOASID
	help
	  DMA remapping (DMAR) devices support enables independent address
	  translations for Direct Memory Access (DMA) from devices.
	  These DMA remapping devices are reported via ACPI tables
	  and include PCI device scope covered by these DMA
	  remapping devices.

config INTEL_IOMMU_DEBUGFS
	bool "Export Intel IOMMU internals in Debugfs"
	depends on INTEL_IOMMU && IOMMU_DEBUGFS
	help
	  !!!WARNING!!!

	  DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!

	  Expose Intel IOMMU internals in Debugfs.

	  This option is -NOT- intended for production environments, and should
	  only be enabled for debugging Intel IOMMU.

config INTEL_IOMMU_SVM
	bool "Support for Shared Virtual Memory with Intel IOMMU"
	depends on INTEL_IOMMU && X86_64
	select PCI_PASID
	select PCI_PRI
	select MMU_NOTIFIER
	select IOASID
	help
	  Shared Virtual Memory (SVM) provides a facility for devices
	  to access DMA resources through process address space by
	  means of a Process Address Space ID (PASID).

config INTEL_IOMMU_DEFAULT_ON
	def_bool y
	prompt "Enable Intel DMA Remapping Devices by default"
	depends on INTEL_IOMMU
	help
	  Selecting this option will enable a DMAR device at boot time if
	  one is found. If this option is not selected, DMAR support can
	  be enabled by passing intel_iommu=on to the kernel.

config INTEL_IOMMU_BROKEN_GFX_WA
	bool "Workaround broken graphics drivers (going away soon)"
	depends on INTEL_IOMMU && BROKEN && X86
	help
	  Current Graphics drivers tend to use physical address
	  for DMA and avoid using DMA APIs. Setting this config
	  option permits the IOMMU driver to set a unity map for
	  all the OS-visible memory. Hence the driver can continue
	  to use physical addresses for DMA, at least until this
	  option is removed in the 2.6.32 kernel.

config INTEL_IOMMU_FLOPPY_WA
	def_bool y
	depends on INTEL_IOMMU && X86
	help
	  Floppy disk drivers are known to bypass DMA API calls
	  thereby failing to work when IOMMU is enabled. This
	  workaround will setup a 1:1 mapping for the first
	  16MiB to make floppy (an ISA device) work.

config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
	bool "Enable Intel IOMMU scalable mode by default"
	depends on INTEL_IOMMU
	help
	  Selecting this option will enable by default the scalable mode if
	  hardware presents the capability. The scalable mode is defined in
	  VT-d 3.0. The scalable mode capability could be checked by reading
	  /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
	  is not selected, scalable mode support could also be enabled by
	  passing intel_iommu=sm_on to the kernel. If not sure, please use
	  the default value.
