# 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 GENERIC_PT
	select IOMMU_PT
	select IOMMU_PT_X86_64
	select IOMMU_PT_VTDSS
	select IOMMU_IOVA
	select IOMMU_IOPF
	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
	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 && BLK_DEV_FD
	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
