226 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # IOMMU_API always gets selected by whoever wants it.
 | |
| config IOMMU_API
 | |
| 	bool
 | |
| 
 | |
| menuconfig IOMMU_SUPPORT
 | |
| 	bool "IOMMU Hardware Support"
 | |
| 	default y
 | |
| 	---help---
 | |
| 	  Say Y here if you want to compile device drivers for IO Memory
 | |
| 	  Management Units into the kernel. These devices usually allow to
 | |
| 	  remap DMA requests and/or remap interrupts from other devices on the
 | |
| 	  system.
 | |
| 
 | |
| if IOMMU_SUPPORT
 | |
| 
 | |
| # MSM IOMMU support
 | |
| 
 | |
| # MSM_IOMMU always gets selected by whoever wants it.
 | |
| config MSM_IOMMU
 | |
| 	bool
 | |
| 
 | |
| # MSM IOMMUv0 support
 | |
| config MSM_IOMMU_V0
 | |
| 	bool "MSM IOMMUv0 Support"
 | |
| 	depends on ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_APQ8064 || ARCH_MSM8610
 | |
| 	select IOMMU_API
 | |
| 	select MSM_IOMMU
 | |
| 	help
 | |
| 	  Support for the IOMMUs (v0) found on certain Qualcomm SOCs.
 | |
| 	  These IOMMUs allow virtualization of the address space used by most
 | |
| 	  cores within the multimedia subsystem.
 | |
| 
 | |
| 	  If unsure, say N here.
 | |
| 
 | |
| # MSM IOMMUv1 support
 | |
| config MSM_IOMMU_V1
 | |
| 	bool "MSM IOMMUv1 Support"
 | |
| 	depends on ARCH_MSM8974 || ARCH_MPQ8092 || ARCH_MSM8226 || ARCH_APQ8084
 | |
| 	select IOMMU_API
 | |
| 	select MSM_IOMMU
 | |
| 	help
 | |
| 	  Support for the IOMMUs (v1) found on certain Qualcomm SOCs.
 | |
| 	  These IOMMUs allow virtualization of the address space used by most
 | |
| 	  cores within the multimedia subsystem.
 | |
| 
 | |
| 	  If unsure, say N here.
 | |
| 
 | |
| # MSM IOMMU CPU-GPU sync programming support
 | |
| config MSM_IOMMU_GPU_SYNC
 | |
| 	bool "MSM IOMMU CPU-GPU Sync Support"
 | |
| 	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_APQ8064 || ARCH_MSM8930) && MSM_IOMMU_V0 && MSM_REMOTE_SPINLOCK_SFPB
 | |
| 	help
 | |
| 	  Say Y here if you want to synchronize access to IOMMU configuration
 | |
| 	  port between CPU and GPU. CPU will grab a remote spinlock before
 | |
| 	  accessing IOMMU configuration registers and GPU will do the same.
 | |
| 
 | |
| 	  If unsure, say N here.
 | |
| 
 | |
| config MSM_IOMMU_PMON
 | |
| 	bool "MSM IOMMU Perfomance Monitoring Support"
 | |
| 	depends on (ARCH_MSM8974 || ARCH_MSM8610 || ARCH_MSM8226) && MSM_IOMMU
 | |
| 	help
 | |
| 	  Support for monitoring IOMMUs performance on certain Qualcomm SOCs.
 | |
| 	  It captures TLB statistics per context bank of the IOMMU as an
 | |
| 	  indication of its performance metric.
 | |
| 
 | |
| 	  If unsure, say N here.
 | |
| 
 | |
| config IOMMU_PGTABLES_L2
 | |
| 	bool "Allow SMMU page tables in the L2 cache (Experimental)"
 | |
| 	depends on MSM_IOMMU && MMU && SMP && CPU_DCACHE_DISABLE=n
 | |
|         help
 | |
|          Improves TLB miss latency at the expense of potential L2 pollution.
 | |
|          However, with large multimedia buffers, the TLB should mostly contain
 | |
|          section mappings and TLB misses should be quite infrequent.
 | |
|          Most people can probably say Y here.
 | |
| 
 | |
| config IOMMU_NON_SECURE
 | |
| 	bool "Turns on programming of secure SMMU by kernel"
 | |
| 	depends on MSM_IOMMU
 | |
|         help
 | |
|          Say Y here if you want the kernel to program all SMMUs regardless of
 | |
|          whether SMMUs are secure or not. A secure SMMU is an SMMU that has
 | |
|          its global address space programmed by the secure environment. In
 | |
|          addition some of the context banks might be owned/programmed by the
 | |
|          secure environment for a secure SMMU. Enabling this feature can be
 | |
|          used during testing when the secure environment is not available
 | |
|          and the kernel needs to program all the SMMUs.
 | |
| 
 | |
|          If unsure, say N here.
 | |
| 
 | |
| # AMD IOMMU support
 | |
| config AMD_IOMMU
 | |
| 	bool "AMD IOMMU support"
 | |
| 	select SWIOTLB
 | |
| 	select PCI_MSI
 | |
| 	select PCI_ATS
 | |
| 	select PCI_PRI
 | |
| 	select PCI_PASID
 | |
| 	select IOMMU_API
 | |
| 	depends on X86_64 && PCI && ACPI
 | |
| 	---help---
 | |
| 	  With this option you can enable support for AMD IOMMU hardware in
 | |
| 	  your system. An IOMMU is a hardware component which provides
 | |
| 	  remapping of DMA memory accesses from devices. With an AMD IOMMU you
 | |
| 	  can isolate the the DMA memory of different devices and protect the
 | |
| 	  system from misbehaving device drivers or hardware.
 | |
| 
 | |
| 	  You can find out if your system has an AMD IOMMU if you look into
 | |
| 	  your BIOS for an option to enable it or if you have an IVRS ACPI
 | |
| 	  table.
 | |
| 
 | |
| config AMD_IOMMU_STATS
 | |
| 	bool "Export AMD IOMMU statistics to debugfs"
 | |
| 	depends on AMD_IOMMU
 | |
| 	select DEBUG_FS
 | |
| 	---help---
 | |
| 	  This option enables code in the AMD IOMMU driver to collect various
 | |
| 	  statistics about whats happening in the driver and exports that
 | |
| 	  information to userspace via debugfs.
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config AMD_IOMMU_V2
 | |
| 	tristate "AMD IOMMU Version 2 driver (EXPERIMENTAL)"
 | |
| 	depends on AMD_IOMMU && PROFILING && EXPERIMENTAL
 | |
| 	select MMU_NOTIFIER
 | |
| 	---help---
 | |
| 	  This option enables support for the AMD IOMMUv2 features of the IOMMU
 | |
| 	  hardware. Select this option if you want to use devices that support
 | |
| 	  the the PCI PRI and PASID interface.
 | |
| 
 | |
| # 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_GENERIC)
 | |
| 	select IOMMU_API
 | |
| 	select DMAR_TABLE
 | |
| 	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_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 IRQ_REMAP
 | |
| 	bool "Support for Interrupt Remapping (EXPERIMENTAL)"
 | |
| 	depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL
 | |
| 	select DMAR_TABLE
 | |
| 	---help---
 | |
| 	  Supports Interrupt remapping for IO-APIC and MSI devices.
 | |
| 	  To use x2apic mode in the CPU's which support x2APIC enhancements or
 | |
| 	  to support platforms with CPU's having > 8 bit APIC ID, say Y.
 | |
| 
 | |
| # OMAP IOMMU support
 | |
| config OMAP_IOMMU
 | |
| 	bool "OMAP IOMMU Support"
 | |
| 	depends on ARCH_OMAP
 | |
| 	select IOMMU_API
 | |
| 
 | |
| config OMAP_IOVMM
 | |
| 	tristate "OMAP IO Virtual Memory Manager Support"
 | |
| 	depends on OMAP_IOMMU
 | |
| 
 | |
| config OMAP_IOMMU_DEBUG
 | |
|        tristate "Export OMAP IOMMU/IOVMM internals in DebugFS"
 | |
|        depends on OMAP_IOVMM && DEBUG_FS
 | |
|        help
 | |
|          Select this to see extensive information about
 | |
|          the internal state of OMAP IOMMU/IOVMM in debugfs.
 | |
| 
 | |
|          Say N unless you know you need this.
 | |
| 
 | |
| config TEGRA_IOMMU_GART
 | |
| 	bool "Tegra GART IOMMU Support"
 | |
| 	depends on ARCH_TEGRA_2x_SOC
 | |
| 	select IOMMU_API
 | |
| 	help
 | |
| 	  Enables support for remapping discontiguous physical memory
 | |
| 	  shared with the operating system into contiguous I/O virtual
 | |
| 	  space through the GART (Graphics Address Relocation Table)
 | |
| 	  hardware included on Tegra SoCs.
 | |
| 
 | |
| config TEGRA_IOMMU_SMMU
 | |
| 	bool "Tegra SMMU IOMMU Support"
 | |
| 	depends on ARCH_TEGRA_3x_SOC
 | |
| 	select IOMMU_API
 | |
| 	help
 | |
| 	  Enables support for remapping discontiguous physical memory
 | |
| 	  shared with the operating system into contiguous I/O virtual
 | |
| 	  space through the SMMU (System Memory Management Unit)
 | |
| 	  hardware included on Tegra SoCs.
 | |
| 
 | |
| endif # IOMMU_SUPPORT
 | 
