Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) # The IOVA library may also be used by non-IOMMU_API users
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) config IOMMU_IOVA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 	tristate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) # The IOASID library may also be used by non-IOMMU_API users
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) config IOASID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 	tristate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) # IOMMU_API always gets selected by whoever wants it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) config IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) if IOMMU_IOVA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) config IOMMU_LIMIT_IOVA_ALIGNMENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	bool "Limit IOVA alignment"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	  When the IOVA framework applies IOVA alignment it aligns all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	  IOVAs to the smallest PAGE_SIZE order which is greater than or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	  equal to the requested IOVA size. This works fine for sizes up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	  to several MiB, but for larger sizes it results in address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	  space wastage and fragmentation. For example drivers with a 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	  GiB IOVA space might run out of IOVA space when allocating
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	  buffers great than 64 MiB.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	  Enable this option to impose a limit on the alignment of IOVAs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	  If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) config IOMMU_IOVA_ALIGNMENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	int "Maximum PAGE_SIZE order of alignment for IOVAs"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	depends on IOMMU_LIMIT_IOVA_ALIGNMENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	range 4 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	default 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	  With this parameter you can specify the maximum PAGE_SIZE order for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	  IOVAs. Larger IOVAs will be aligned only to this specified order.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	  The order is expressed a power of two multiplied by the PAGE_SIZE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	  If unsure, leave the default value "9".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) menuconfig IOMMU_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	bool "IOMMU Hardware Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	  Say Y here if you want to compile device drivers for IO Memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	  Management Units into the kernel. These devices usually allow to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	  remap DMA requests and/or remap interrupts from other devices on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	  system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) if IOMMU_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) menu "Generic IOMMU Pagetable Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) # Selected by the actual pagetable implementations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) config IOMMU_IO_PGTABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) config IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	bool "ARMv7/v8 Long Descriptor Format"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	select IOMMU_IO_PGTABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	  Enable support for the ARM long descriptor pagetable format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	  This allocator supports 4K/2M/1G, 16K/32M and 64K/512M page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	  sizes at both stage-1 and stage-2, as well as address spaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	  up to 48-bits in size.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) config IOMMU_IO_PGTABLE_LPAE_SELFTEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	bool "LPAE selftests"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	depends on IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	  Enable self-tests for LPAE page table allocator. This performs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	  a series of page-table consistency checks during boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) config IOMMU_IO_PGTABLE_ARMV7S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	bool "ARMv7/v8 Short Descriptor Format"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	select IOMMU_IO_PGTABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	depends on ARM || ARM64 || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	  Enable support for the ARM Short-descriptor pagetable format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	  This supports 32-bit virtual and physical addresses mapped using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	  2-level tables with 4KB pages/1MB sections, and contiguous entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	  for 64KB pages/16MB supersections if indicated by the IOMMU driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) config IOMMU_IO_PGTABLE_ARMV7S_SELFTEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	bool "ARMv7s selftests"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	depends on IOMMU_IO_PGTABLE_ARMV7S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	  Enable self-tests for ARMv7s page table allocator. This performs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	  a series of page-table consistency checks during boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) endmenu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) config IOMMU_DEBUGFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	bool "Export IOMMU internals in DebugFS"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	depends on DEBUG_FS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	  Allows exposure of IOMMU device internals. This option enables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	  the use of debugfs by IOMMU drivers as required. Devices can,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	  at initialization time, cause the IOMMU code to create a top-level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	  debug/iommu directory, and then populate a subdirectory with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	  entries as required.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) config IOMMU_DEFAULT_PASSTHROUGH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	bool "IOMMU passthrough by default"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	depends on IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	  Enable passthrough by default, removing the need to pass in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	  iommu.passthrough=on or iommu=pt through command line. If this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	  is enabled, you can still disable with iommu.passthrough=off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	  or iommu=nopt depending on the architecture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) config OF_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	depends on OF && IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) # IOMMU-agnostic DMA-mapping layer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) config IOMMU_DMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	select DMA_OPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	select IOMMU_IOVA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	select IRQ_MSI_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	select NEED_SG_DMA_LENGTH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) config FSL_PAMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	bool "Freescale IOMMU support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	depends on PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	depends on PHYS_64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	depends on PPC_E500MC || (COMPILE_TEST && PPC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	select GENERIC_ALLOCATOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	  Freescale PAMU support. PAMU is the IOMMU present on Freescale QorIQ platforms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	  PAMU can authorize memory access, remap the memory address, and remap I/O
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	  transaction types.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) # MSM IOMMU support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) config MSM_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	bool "MSM IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	depends on ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	depends on ARCH_MSM8X60 || ARCH_MSM8960 || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	select IOMMU_IO_PGTABLE_ARMV7S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	  Support for the IOMMUs found on certain Qualcomm SOCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	  These IOMMUs allow virtualization of the address space used by most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	  cores within the multimedia subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) source "drivers/iommu/amd/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) source "drivers/iommu/intel/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) config IRQ_REMAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	bool "Support for Interrupt Remapping"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	select DMAR_TABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	  Supports Interrupt remapping for IO-APIC and MSI devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	  To use x2apic mode in the CPU's which support x2APIC enhancements or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	  to support platforms with CPU's having > 8 bit APIC ID, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) # OMAP IOMMU support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) config OMAP_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	bool "OMAP IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	depends on ARCH_OMAP2PLUS || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	  The OMAP3 media platform drivers depend on iommu support,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	  if you need them say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) config OMAP_IOMMU_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	bool "Export OMAP IOMMU internals in DebugFS"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	depends on OMAP_IOMMU && DEBUG_FS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	  Select this to see extensive information about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	  the internal state of OMAP IOMMU in debugfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	  Say N unless you know you need this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) config ROCKCHIP_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	tristate "Rockchip IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	depends on ARM || ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	depends on ARCH_ROCKCHIP || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	  Support for IOMMUs found on Rockchip rk32xx SOCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	  These IOMMUs allow virtualization of the address space used by most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	  cores within the multimedia subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	  Say Y here if you are using a Rockchip SoC that includes an IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	  device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) config SUN50I_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	bool "Allwinner H6 IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	depends on HAS_DMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	depends on ARCH_SUNXI || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	  Support for the IOMMU introduced in the Allwinner H6 SoCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) config TEGRA_IOMMU_GART
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 	bool "Tegra GART IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	depends on ARCH_TEGRA_2x_SOC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	depends on TEGRA_MC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	  Enables support for remapping discontiguous physical memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	  shared with the operating system into contiguous I/O virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	  space through the GART (Graphics Address Relocation Table)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 	  hardware included on Tegra SoCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) config TEGRA_IOMMU_SMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	bool "NVIDIA Tegra SMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	depends on ARCH_TEGRA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	depends on TEGRA_AHB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 	depends on TEGRA_MC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	  This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	  SoCs (Tegra30 up to Tegra210).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) config EXYNOS_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	bool "Exynos IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 	depends on ARCH_EXYNOS || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	depends on !CPU_BIG_ENDIAN # revisit driver if we can enable big-endian ptes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 	  Support for the IOMMU (System MMU) of Samsung Exynos application
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	  processor family. This enables H/W multimedia accelerators to see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 	  non-linear physical memory chunks as linear memory in their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	  address space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) config EXYNOS_IOMMU_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	bool "Debugging log for Exynos IOMMU"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	depends on EXYNOS_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	  Select this to see the detailed log message that shows what
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	  happens in the IOMMU driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 	  Say N unless you need kernel log message for IOMMU debugging.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) config IPMMU_VMSA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 	bool "Renesas VMSA-compatible IPMMU"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 	depends on ARCH_RENESAS || (COMPILE_TEST && !GENERIC_ATOMIC64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	select IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 	  Support for the Renesas VMSA-compatible IPMMU found in the R-Mobile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 	  APE6, R-Car Gen{2,3} and RZ/G{1,2} SoCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 	  If unsure, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) config SPAPR_TCE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 	bool "sPAPR TCE IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 	depends on PPC_POWERNV || PPC_PSERIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 	  Enables bits of IOMMU API required by VFIO. The iommu_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 	  is not implemented as it is not necessary for VFIO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) # ARM IOMMU support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) config ARM_SMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 	tristate "ARM Ltd. System MMU (SMMU) Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 	depends on ARM64 || ARM || (COMPILE_TEST && !GENERIC_ATOMIC64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 	depends on QCOM_SCM || !QCOM_SCM #if QCOM_SCM=m this can't be =y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 	select IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 	select ARM_DMA_USE_IOMMU if ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	  Support for implementations of the ARM System MMU architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	  versions 1 and 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 	  Say Y here if your SoC includes an IOMMU device implementing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 	  the ARM SMMU architecture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) config ARM_SMMU_LEGACY_DT_BINDINGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	bool "Support the legacy \"mmu-masters\" devicetree bindings"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	depends on ARM_SMMU=y && OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	  Support for the badly designed and deprecated "mmu-masters"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 	  devicetree bindings. This allows some DMA masters to attach
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 	  to the SMMU but does not provide any support via the DMA API.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 	  If you're lucky, you might be able to get VFIO up and running.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 	  If you say Y here then you'll make me very sad. Instead, say N
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	  and move your firmware to the utopian future that was 2016.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) config ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	bool "Default to disabling bypass on ARM SMMU v1 and v2"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	depends on ARM_SMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	  Say Y here to (by default) disable bypass streams such that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 	  incoming transactions from devices that are not attached to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	  an iommu domain will report an abort back to the device and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 	  will not be allowed to pass through the SMMU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 	  Any old kernels that existed before this KConfig was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	  introduced would default to _allowing_ bypass (AKA the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 	  equivalent of NO for this config).  However the default for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 	  this option is YES because the old behavior is insecure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 	  There are few reasons to allow unmatched stream bypass, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 	  even fewer good ones.  If saying YES here breaks your board
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 	  you should work on fixing your board.  This KConfig option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	  is expected to be removed in the future and we'll simply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 	  hardcode the bypass disable in the code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 	  NOTE: the kernel command line parameter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 	  'arm-smmu.disable_bypass' will continue to override this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 	  config.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) config ARM_SMMU_V3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 	tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 	depends on ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 	select IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	select GENERIC_MSI_IRQ_DOMAIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	  Support for implementations of the ARM System MMU architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	  version 3 providing translation support to a PCIe root complex.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	  Say Y here if your system includes an IOMMU device implementing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	  the ARM SMMUv3 architecture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) config ARM_SMMU_V3_SVA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 	bool "Shared Virtual Addressing support for the ARM SMMUv3"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 	depends on ARM_SMMU_V3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 	  Support for sharing process address spaces with devices using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) 	  SMMUv3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 	  Say Y here if your system supports SVA extensions such as PCIe PASID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 	  and PRI.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) config S390_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 	def_bool y if S390 && PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 	depends on S390 && PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 	  Support for the IOMMU API for s390 PCI devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) config S390_CCW_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 	bool "S390 CCW IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 	depends on S390 && CCW || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 	  Enables bits of IOMMU API required by VFIO. The iommu_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) 	  is not implemented as it is not necessary for VFIO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) config S390_AP_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) 	bool "S390 AP IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 	depends on S390 && ZCRYPT || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) 	  Enables bits of IOMMU API required by VFIO. The iommu_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) 	  is not implemented as it is not necessary for VFIO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) config MTK_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 	bool "MTK IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) 	depends on ARCH_MEDIATEK || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) 	select IOMMU_IO_PGTABLE_ARMV7S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) 	select MEMORY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 	select MTK_SMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) 	  Support for the M4U on certain Mediatek SOCs. M4U is MultiMedia
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) 	  Memory Management Unit. This option enables remapping of DMA memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) 	  accesses for the multimedia subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) 	  If unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) config MTK_IOMMU_V1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 	bool "MTK IOMMU Version 1 (M4U gen1) Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) 	depends on ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) 	depends on ARCH_MEDIATEK || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 	select MEMORY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) 	select MTK_SMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) 	  Support for the M4U on certain Mediatek SoCs. M4U generation 1 HW is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) 	  Multimedia Memory Managememt Unit. This option enables remapping of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) 	  DMA memory accesses for the multimedia subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) 	  if unsure, say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) config QCOM_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) 	# Note: iommu drivers cannot (yet?) be built as modules
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) 	bool "Qualcomm IOMMU Support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 	depends on ARCH_QCOM || (COMPILE_TEST && !GENERIC_ATOMIC64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) 	depends on QCOM_SCM=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) 	select IOMMU_IO_PGTABLE_LPAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) 	select ARM_DMA_USE_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) 	  Support for IOMMU on certain Qualcomm SoCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) config HYPERV_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) 	bool "Hyper-V x2APIC IRQ Handling"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) 	depends on HYPERV && X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) 	default HYPERV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) 	  Stub IOMMU driver to handle IRQs as to allow Hyper-V Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 	  guests to run with x2APIC mode enabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) config VIRTIO_IOMMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) 	tristate "Virtio IOMMU driver"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) 	depends on VIRTIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 	depends on ARM64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) 	select IOMMU_API
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) 	select INTERVAL_TREE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 	  Para-virtualised IOMMU driver with virtio.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) 	  Say Y here if you intend to run this kernel as a guest.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) endif # IOMMU_SUPPORT