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

config DMAR_PERF
	bool

config DMAR_DEBUG
	bool

config INTEL_IOMMU
	bool "Support for Intel IOMMU using DMA Remapping Devices"
	depends on PCI_MSI && ACPI && X86
	select DMA_OPS
	select IOMMU_API
	select IOMMU_IOVA
	select IOMMUFD_DRIVER if IOMMUFD
	select NEED_DMA_MAP_STATE
	select DMAR_TABLE
	select SWIOTLB
	select PCI_ATS
	select PCI_PRI
	select PCI_PASID
	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.

if INTEL_IOMMU

config INTEL_IOMMU_DEBUGFS
	bool "Export Intel IOMMU internals in Debugfs"
	depends on IOMMU_DEBUGFS
	select DMAR_PERF
	select DMAR_DEBUG
	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 X86_64
	select MMU_NOTIFIER
	select IOMMU_SVA
	select IOMMU_IOPF
	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
	bool "Enable Intel DMA Remapping Devices by default"
	default y
	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_FLOPPY_WA
	def_bool y
	depends on 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"
	default y
	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.

config INTEL_IOMMU_PERF_EVENTS
	bool "Intel IOMMU performance events"
	default y
	depends on INTEL_IOMMU && PERF_EVENTS
	help
	  Selecting this option will enable the performance monitoring
	  infrastructure in the Intel IOMMU. It collects information about
	  key events occurring during operation of the remapping hardware,
	  to aid performance tuning and debug. These are available on modern
	  processors which support Intel VT-d 4.0 and later.

endif # INTEL_IOMMU
