311 lines · plain
1# SPDX-License-Identifier: GPL-2.02#3# PCI configuration4#5 6# select this to offer the PCI prompt7config HAVE_PCI8 bool9 10# select this to unconditionally force on PCI support11config FORCE_PCI12 bool13 select HAVE_PCI14 select PCI15 16# select this to provide a generic PCI iomap,17# without PCI itself having to be defined18config GENERIC_PCI_IOMAP19 bool20 21menuconfig PCI22 bool "PCI support"23 depends on HAVE_PCI24 help25 This option enables support for the PCI local bus, including26 support for PCI-X and the foundations for PCI Express support.27 Say 'Y' here unless you know what you are doing.28 29if PCI30 31config PCI_DOMAINS32 bool33 depends on PCI34 35config PCI_DOMAINS_GENERIC36 bool37 select PCI_DOMAINS38 39config PCI_SYSCALL40 bool41 42source "drivers/pci/pcie/Kconfig"43 44config PCI_MSI45 bool "Message Signaled Interrupts (MSI and MSI-X)"46 select GENERIC_MSI_IRQ47 help48 This allows device drivers to enable MSI (Message Signaled49 Interrupts). Message Signaled Interrupts enable a device to50 generate an interrupt using an inbound Memory Write on its51 PCI bus instead of asserting a device IRQ pin.52 53 Use of PCI MSI interrupts can be disabled at kernel boot time54 by using the 'pci=nomsi' option. This disables MSI for the55 entire system.56 57 If you don't know what to do here, say Y.58 59config PCI_MSI_ARCH_FALLBACKS60 bool61 62config PCI_QUIRKS63 default y64 bool "Enable PCI quirk workarounds" if EXPERT65 help66 This enables workarounds for various PCI chipset bugs/quirks.67 Disable this only if your target machine is unaffected by PCI68 quirks.69 70config PCI_DEBUG71 bool "PCI Debugging"72 depends on DEBUG_KERNEL73 help74 Say Y here if you want the PCI core to produce a bunch of debug75 messages to the system log. Select this if you are having a76 problem with PCI support and want to see more of what is going on.77 78 When in doubt, say N.79 80config PCI_REALLOC_ENABLE_AUTO81 bool "Enable PCI resource re-allocation detection"82 depends on PCI_IOV83 help84 Say Y here if you want the PCI core to detect if PCI resource85 re-allocation needs to be enabled. You can always use pci=realloc=on86 or pci=realloc=off to override it. It will automatically87 re-allocate PCI resources if SR-IOV BARs have not been allocated by88 the BIOS.89 90 When in doubt, say N.91 92config PCI_STUB93 tristate "PCI Stub driver"94 help95 Say Y or M here if you want be able to reserve a PCI device96 when it is going to be assigned to a guest operating system.97 98 When in doubt, say N.99 100config PCI_PF_STUB101 tristate "PCI PF Stub driver"102 depends on PCI_IOV103 help104 Say Y or M here if you want to enable support for devices that105 require SR-IOV support, while at the same time the PF (Physical106 Function) itself is not providing any actual services on the107 host itself such as storage or networking.108 109 When in doubt, say N.110 111config XEN_PCIDEV_FRONTEND112 tristate "Xen PCI Frontend"113 depends on XEN_PV114 select PCI_XEN115 select XEN_XENBUS_FRONTEND116 default y117 help118 The PCI device frontend driver allows the kernel to import arbitrary119 PCI devices from a PCI backend to support PCI driver domains.120 121config PCI_ATS122 bool123 124config PCI_DOE125 bool126 127config PCI_ECAM128 bool129 130config PCI_LOCKLESS_CONFIG131 bool132 133config PCI_BRIDGE_EMUL134 bool135 136config PCI_IOV137 bool "PCI IOV support"138 select PCI_ATS139 help140 I/O Virtualization is a PCI feature supported by some devices141 which allows them to create virtual devices which share their142 physical resources.143 144 If unsure, say N.145 146config PCI_NPEM147 bool "Native PCIe Enclosure Management"148 depends on LEDS_CLASS=y149 help150 Support for Native PCIe Enclosure Management. It allows managing LED151 indications in storage enclosures. Enclosure must support following152 indications: OK, Locate, Fail, Rebuild, other indications are153 optional.154 155config PCI_PRI156 bool "PCI PRI support"157 select PCI_ATS158 help159 PRI is the PCI Page Request Interface. It allows PCI devices that are160 behind an IOMMU to recover from page faults.161 162 If unsure, say N.163 164config PCI_PASID165 bool "PCI PASID support"166 select PCI_ATS167 help168 Process Address Space Identifiers (PASIDs) can be used by PCI devices169 to access more than one IO address space at the same time. To make170 use of this feature an IOMMU is required which also supports PASIDs.171 Select this option if you have such an IOMMU and want to compile the172 driver for it into your kernel.173 174 If unsure, say N.175 176config PCI_P2PDMA177 bool "PCI peer-to-peer transfer support"178 depends on ZONE_DEVICE179 #180 # The need for the scatterlist DMA bus address flag means PCI P2PDMA181 # requires 64bit182 #183 depends on 64BIT184 select GENERIC_ALLOCATOR185 select NEED_SG_DMA_FLAGS186 help187 Enables drivers to do PCI peer-to-peer transactions to and from188 BARs that are exposed in other devices that are the part of189 the hierarchy where peer-to-peer DMA is guaranteed by the PCI190 specification to work (ie. anything below a single PCI bridge).191 192 Many PCIe root complexes do not support P2P transactions and193 it's hard to tell which support it at all, so at this time,194 P2P DMA transactions must be between devices behind the same root195 port.196 197 If unsure, say N.198 199config PCI_LABEL200 def_bool y if (DMI || ACPI)201 select NLS202 203config PCI_HYPERV204 tristate "Hyper-V PCI Frontend"205 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && SYSFS206 select PCI_HYPERV_INTERFACE207 help208 The PCI device frontend driver allows the kernel to import arbitrary209 PCI devices from a PCI backend to support PCI driver domains.210 211config PCI_DYNAMIC_OF_NODES212 bool "Create Device tree nodes for PCI devices"213 depends on OF_IRQ214 select OF_DYNAMIC215 help216 This option enables support for generating device tree nodes for some217 PCI devices. Thus, the driver of this kind can load and overlay218 flattened device tree for its downstream devices.219 220 Once this option is selected, the device tree nodes will be generated221 for all PCI bridges.222 223choice224 prompt "PCI Express hierarchy optimization setting"225 default PCIE_BUS_DEFAULT226 depends on PCI && EXPERT227 help228 MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe229 device parameters that affect performance and the ability to230 support hotplug and peer-to-peer DMA.231 232 The following choices set the MPS and MRRS optimization strategy233 at compile-time. The choices are the same as those offered for234 the kernel command-line parameter 'pci', i.e.,235 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',236 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.237 238 This is a compile-time setting and can be overridden by the above239 command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.240 241config PCIE_BUS_TUNE_OFF242 bool "Tune Off"243 depends on PCI244 help245 Use the BIOS defaults; don't touch MPS at all. This is the same246 as booting with 'pci=pcie_bus_tune_off'.247 248config PCIE_BUS_DEFAULT249 bool "Default"250 depends on PCI251 help252 Default choice; ensure that the MPS matches upstream bridge.253 254config PCIE_BUS_SAFE255 bool "Safe"256 depends on PCI257 help258 Use largest MPS that boot-time devices support. If you have a259 closed system with no possibility of adding new devices, this260 will use the largest MPS that's supported by all devices. This261 is the same as booting with 'pci=pcie_bus_safe'.262 263config PCIE_BUS_PERFORMANCE264 bool "Performance"265 depends on PCI266 help267 Use MPS and MRRS for best performance. Ensure that a given268 device's MPS is no larger than its parent MPS, which allows us to269 keep all switches/bridges to the max MPS supported by their270 parent. This is the same as booting with 'pci=pcie_bus_perf'.271 272config PCIE_BUS_PEER2PEER273 bool "Peer2peer"274 depends on PCI275 help276 Set MPS = 128 for all devices. MPS configuration effected by the277 other options could cause the MPS on one root port to be278 different than that of the MPS on another, which may cause279 hot-added devices or peer-to-peer DMA to fail. Set MPS to the280 smallest possible value (128B) system-wide to avoid these issues.281 This is the same as booting with 'pci=pcie_bus_peer2peer'.282 283endchoice284 285config VGA_ARB286 bool "VGA Arbitration" if EXPERT287 default y288 depends on (PCI && !S390)289 help290 Some "legacy" VGA devices implemented on PCI typically have the same291 hard-decoded addresses as they did on ISA. When multiple PCI devices292 are accessed at same time they need some kind of coordination. Please293 see Documentation/gpu/vgaarbiter.rst for more details. Select this to294 enable VGA arbiter.295 296config VGA_ARB_MAX_GPUS297 int "Maximum number of GPUs"298 default 16299 depends on VGA_ARB300 help301 Reserves space in the kernel to maintain resource locking for302 multiple GPUS. The overhead for each GPU is very small.303 304source "drivers/pci/hotplug/Kconfig"305source "drivers/pci/controller/Kconfig"306source "drivers/pci/endpoint/Kconfig"307source "drivers/pci/switch/Kconfig"308source "drivers/pci/pwrctl/Kconfig"309 310endif311