# 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 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
