Kconfig 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. # SPDX-License-Identifier: GPL-2.0
  2. #
  3. # PCI configuration
  4. #
  5. # select this to offer the PCI prompt
  6. config HAVE_PCI
  7. bool
  8. # select this to unconditionally force on PCI support
  9. config FORCE_PCI
  10. bool
  11. select HAVE_PCI
  12. select PCI
  13. menuconfig PCI
  14. bool "PCI support"
  15. depends on HAVE_PCI
  16. help
  17. This option enables support for the PCI local bus, including
  18. support for PCI-X and the foundations for PCI Express support.
  19. Say 'Y' here unless you know what you are doing.
  20. if PCI
  21. config PCI_DOMAINS
  22. bool
  23. depends on PCI
  24. config PCI_DOMAINS_GENERIC
  25. bool
  26. select PCI_DOMAINS
  27. config PCI_SYSCALL
  28. bool
  29. source "drivers/pci/pcie/Kconfig"
  30. config PCI_MSI
  31. bool "Message Signaled Interrupts (MSI and MSI-X)"
  32. select GENERIC_MSI_IRQ
  33. help
  34. This allows device drivers to enable MSI (Message Signaled
  35. Interrupts). Message Signaled Interrupts enable a device to
  36. generate an interrupt using an inbound Memory Write on its
  37. PCI bus instead of asserting a device IRQ pin.
  38. Use of PCI MSI interrupts can be disabled at kernel boot time
  39. by using the 'pci=nomsi' option. This disables MSI for the
  40. entire system.
  41. If you don't know what to do here, say Y.
  42. config PCI_MSI_IRQ_DOMAIN
  43. def_bool y
  44. depends on PCI_MSI
  45. select GENERIC_MSI_IRQ_DOMAIN
  46. config PCI_MSI_ARCH_FALLBACKS
  47. bool
  48. config PCI_QUIRKS
  49. default y
  50. bool "Enable PCI quirk workarounds" if EXPERT
  51. help
  52. This enables workarounds for various PCI chipset bugs/quirks.
  53. Disable this only if your target machine is unaffected by PCI
  54. quirks.
  55. config PCI_DEBUG
  56. bool "PCI Debugging"
  57. depends on DEBUG_KERNEL
  58. help
  59. Say Y here if you want the PCI core to produce a bunch of debug
  60. messages to the system log. Select this if you are having a
  61. problem with PCI support and want to see more of what is going on.
  62. When in doubt, say N.
  63. config PCI_REALLOC_ENABLE_AUTO
  64. bool "Enable PCI resource re-allocation detection"
  65. depends on PCI_IOV
  66. help
  67. Say Y here if you want the PCI core to detect if PCI resource
  68. re-allocation needs to be enabled. You can always use pci=realloc=on
  69. or pci=realloc=off to override it. It will automatically
  70. re-allocate PCI resources if SR-IOV BARs have not been allocated by
  71. the BIOS.
  72. When in doubt, say N.
  73. config PCI_STUB
  74. tristate "PCI Stub driver"
  75. help
  76. Say Y or M here if you want be able to reserve a PCI device
  77. when it is going to be assigned to a guest operating system.
  78. When in doubt, say N.
  79. config PCI_PF_STUB
  80. tristate "PCI PF Stub driver"
  81. depends on PCI_IOV
  82. help
  83. Say Y or M here if you want to enable support for devices that
  84. require SR-IOV support, while at the same time the PF (Physical
  85. Function) itself is not providing any actual services on the
  86. host itself such as storage or networking.
  87. When in doubt, say N.
  88. config XEN_PCIDEV_FRONTEND
  89. tristate "Xen PCI Frontend"
  90. depends on X86 && XEN
  91. select PCI_XEN
  92. select XEN_XENBUS_FRONTEND
  93. default y
  94. help
  95. The PCI device frontend driver allows the kernel to import arbitrary
  96. PCI devices from a PCI backend to support PCI driver domains.
  97. config PCI_ATS
  98. bool
  99. config PCI_ECAM
  100. bool
  101. config PCI_LOCKLESS_CONFIG
  102. bool
  103. config PCI_BRIDGE_EMUL
  104. bool
  105. config PCI_IOV
  106. bool "PCI IOV support"
  107. select PCI_ATS
  108. help
  109. I/O Virtualization is a PCI feature supported by some devices
  110. which allows them to create virtual devices which share their
  111. physical resources.
  112. If unsure, say N.
  113. config PCI_PRI
  114. bool "PCI PRI support"
  115. select PCI_ATS
  116. help
  117. PRI is the PCI Page Request Interface. It allows PCI devices that are
  118. behind an IOMMU to recover from page faults.
  119. If unsure, say N.
  120. config PCI_PASID
  121. bool "PCI PASID support"
  122. select PCI_ATS
  123. help
  124. Process Address Space Identifiers (PASIDs) can be used by PCI devices
  125. to access more than one IO address space at the same time. To make
  126. use of this feature an IOMMU is required which also supports PASIDs.
  127. Select this option if you have such an IOMMU and want to compile the
  128. driver for it into your kernel.
  129. If unsure, say N.
  130. config PCI_P2PDMA
  131. bool "PCI peer-to-peer transfer support"
  132. depends on ZONE_DEVICE
  133. select GENERIC_ALLOCATOR
  134. help
  135. Enableѕ drivers to do PCI peer-to-peer transactions to and from
  136. BARs that are exposed in other devices that are the part of
  137. the hierarchy where peer-to-peer DMA is guaranteed by the PCI
  138. specification to work (ie. anything below a single PCI bridge).
  139. Many PCIe root complexes do not support P2P transactions and
  140. it's hard to tell which support it at all, so at this time,
  141. P2P DMA transactions must be between devices behind the same root
  142. port.
  143. If unsure, say N.
  144. config PCI_LABEL
  145. def_bool y if (DMI || ACPI)
  146. select NLS
  147. config PCI_HYPERV
  148. tristate "Hyper-V PCI Frontend"
  149. depends on X86_64 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
  150. select PCI_HYPERV_INTERFACE
  151. help
  152. The PCI device frontend driver allows the kernel to import arbitrary
  153. PCI devices from a PCI backend to support PCI driver domains.
  154. choice
  155. prompt "PCI Express hierarchy optimization setting"
  156. default PCIE_BUS_DEFAULT
  157. depends on PCI && EXPERT
  158. help
  159. MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
  160. device parameters that affect performance and the ability to
  161. support hotplug and peer-to-peer DMA.
  162. The following choices set the MPS and MRRS optimization strategy
  163. at compile-time. The choices are the same as those offered for
  164. the kernel command-line parameter 'pci', i.e.,
  165. 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
  166. 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
  167. This is a compile-time setting and can be overridden by the above
  168. command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.
  169. config PCIE_BUS_TUNE_OFF
  170. bool "Tune Off"
  171. depends on PCI
  172. help
  173. Use the BIOS defaults; don't touch MPS at all. This is the same
  174. as booting with 'pci=pcie_bus_tune_off'.
  175. config PCIE_BUS_DEFAULT
  176. bool "Default"
  177. depends on PCI
  178. help
  179. Default choice; ensure that the MPS matches upstream bridge.
  180. config PCIE_BUS_SAFE
  181. bool "Safe"
  182. depends on PCI
  183. help
  184. Use largest MPS that boot-time devices support. If you have a
  185. closed system with no possibility of adding new devices, this
  186. will use the largest MPS that's supported by all devices. This
  187. is the same as booting with 'pci=pcie_bus_safe'.
  188. config PCIE_BUS_PERFORMANCE
  189. bool "Performance"
  190. depends on PCI
  191. help
  192. Use MPS and MRRS for best performance. Ensure that a given
  193. device's MPS is no larger than its parent MPS, which allows us to
  194. keep all switches/bridges to the max MPS supported by their
  195. parent. This is the same as booting with 'pci=pcie_bus_perf'.
  196. config PCIE_BUS_PEER2PEER
  197. bool "Peer2peer"
  198. depends on PCI
  199. help
  200. Set MPS = 128 for all devices. MPS configuration effected by the
  201. other options could cause the MPS on one root port to be
  202. different than that of the MPS on another, which may cause
  203. hot-added devices or peer-to-peer DMA to fail. Set MPS to the
  204. smallest possible value (128B) system-wide to avoid these issues.
  205. This is the same as booting with 'pci=pcie_bus_peer2peer'.
  206. endchoice
  207. source "drivers/pci/hotplug/Kconfig"
  208. source "drivers/pci/controller/Kconfig"
  209. source "drivers/pci/endpoint/Kconfig"
  210. source "drivers/pci/switch/Kconfig"
  211. endif