0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # PCI configuration
0004 #
0005
0006 # select this to offer the PCI prompt
0007 config HAVE_PCI
0008 bool
0009
0010 # select this to unconditionally force on PCI support
0011 config FORCE_PCI
0012 bool
0013 select HAVE_PCI
0014 select PCI
0015
0016 menuconfig PCI
0017 bool "PCI support"
0018 depends on HAVE_PCI
0019 help
0020 This option enables support for the PCI local bus, including
0021 support for PCI-X and the foundations for PCI Express support.
0022 Say 'Y' here unless you know what you are doing.
0023
0024 if PCI
0025
0026 config PCI_DOMAINS
0027 bool
0028 depends on PCI
0029
0030 config PCI_DOMAINS_GENERIC
0031 bool
0032 select PCI_DOMAINS
0033
0034 config PCI_SYSCALL
0035 bool
0036
0037 source "drivers/pci/pcie/Kconfig"
0038
0039 config PCI_MSI
0040 bool "Message Signaled Interrupts (MSI and MSI-X)"
0041 select GENERIC_MSI_IRQ
0042 help
0043 This allows device drivers to enable MSI (Message Signaled
0044 Interrupts). Message Signaled Interrupts enable a device to
0045 generate an interrupt using an inbound Memory Write on its
0046 PCI bus instead of asserting a device IRQ pin.
0047
0048 Use of PCI MSI interrupts can be disabled at kernel boot time
0049 by using the 'pci=nomsi' option. This disables MSI for the
0050 entire system.
0051
0052 If you don't know what to do here, say Y.
0053
0054 config PCI_MSI_IRQ_DOMAIN
0055 def_bool y
0056 depends on PCI_MSI
0057 select GENERIC_MSI_IRQ_DOMAIN
0058
0059 config PCI_MSI_ARCH_FALLBACKS
0060 bool
0061
0062 config PCI_QUIRKS
0063 default y
0064 bool "Enable PCI quirk workarounds" if EXPERT
0065 help
0066 This enables workarounds for various PCI chipset bugs/quirks.
0067 Disable this only if your target machine is unaffected by PCI
0068 quirks.
0069
0070 config PCI_DEBUG
0071 bool "PCI Debugging"
0072 depends on DEBUG_KERNEL
0073 help
0074 Say Y here if you want the PCI core to produce a bunch of debug
0075 messages to the system log. Select this if you are having a
0076 problem with PCI support and want to see more of what is going on.
0077
0078 When in doubt, say N.
0079
0080 config PCI_REALLOC_ENABLE_AUTO
0081 bool "Enable PCI resource re-allocation detection"
0082 depends on PCI_IOV
0083 help
0084 Say Y here if you want the PCI core to detect if PCI resource
0085 re-allocation needs to be enabled. You can always use pci=realloc=on
0086 or pci=realloc=off to override it. It will automatically
0087 re-allocate PCI resources if SR-IOV BARs have not been allocated by
0088 the BIOS.
0089
0090 When in doubt, say N.
0091
0092 config PCI_STUB
0093 tristate "PCI Stub driver"
0094 help
0095 Say Y or M here if you want be able to reserve a PCI device
0096 when it is going to be assigned to a guest operating system.
0097
0098 When in doubt, say N.
0099
0100 config PCI_PF_STUB
0101 tristate "PCI PF Stub driver"
0102 depends on PCI_IOV
0103 help
0104 Say Y or M here if you want to enable support for devices that
0105 require SR-IOV support, while at the same time the PF (Physical
0106 Function) itself is not providing any actual services on the
0107 host itself such as storage or networking.
0108
0109 When in doubt, say N.
0110
0111 config XEN_PCIDEV_FRONTEND
0112 tristate "Xen PCI Frontend"
0113 depends on XEN_PV
0114 select PCI_XEN
0115 select XEN_XENBUS_FRONTEND
0116 default y
0117 help
0118 The PCI device frontend driver allows the kernel to import arbitrary
0119 PCI devices from a PCI backend to support PCI driver domains.
0120
0121 config PCI_ATS
0122 bool
0123
0124 config PCI_DOE
0125 bool
0126
0127 config PCI_ECAM
0128 bool
0129
0130 config PCI_LOCKLESS_CONFIG
0131 bool
0132
0133 config PCI_BRIDGE_EMUL
0134 bool
0135
0136 config PCI_IOV
0137 bool "PCI IOV support"
0138 select PCI_ATS
0139 help
0140 I/O Virtualization is a PCI feature supported by some devices
0141 which allows them to create virtual devices which share their
0142 physical resources.
0143
0144 If unsure, say N.
0145
0146 config PCI_PRI
0147 bool "PCI PRI support"
0148 select PCI_ATS
0149 help
0150 PRI is the PCI Page Request Interface. It allows PCI devices that are
0151 behind an IOMMU to recover from page faults.
0152
0153 If unsure, say N.
0154
0155 config PCI_PASID
0156 bool "PCI PASID support"
0157 select PCI_ATS
0158 help
0159 Process Address Space Identifiers (PASIDs) can be used by PCI devices
0160 to access more than one IO address space at the same time. To make
0161 use of this feature an IOMMU is required which also supports PASIDs.
0162 Select this option if you have such an IOMMU and want to compile the
0163 driver for it into your kernel.
0164
0165 If unsure, say N.
0166
0167 config PCI_P2PDMA
0168 bool "PCI peer-to-peer transfer support"
0169 depends on ZONE_DEVICE
0170 #
0171 # The need for the scatterlist DMA bus address flag means PCI P2PDMA
0172 # requires 64bit
0173 #
0174 depends on 64BIT
0175 select GENERIC_ALLOCATOR
0176 help
0177 Enableѕ drivers to do PCI peer-to-peer transactions to and from
0178 BARs that are exposed in other devices that are the part of
0179 the hierarchy where peer-to-peer DMA is guaranteed by the PCI
0180 specification to work (ie. anything below a single PCI bridge).
0181
0182 Many PCIe root complexes do not support P2P transactions and
0183 it's hard to tell which support it at all, so at this time,
0184 P2P DMA transactions must be between devices behind the same root
0185 port.
0186
0187 If unsure, say N.
0188
0189 config PCI_LABEL
0190 def_bool y if (DMI || ACPI)
0191 select NLS
0192
0193 config PCI_HYPERV
0194 tristate "Hyper-V PCI Frontend"
0195 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
0196 select PCI_HYPERV_INTERFACE
0197 help
0198 The PCI device frontend driver allows the kernel to import arbitrary
0199 PCI devices from a PCI backend to support PCI driver domains.
0200
0201 choice
0202 prompt "PCI Express hierarchy optimization setting"
0203 default PCIE_BUS_DEFAULT
0204 depends on PCI && EXPERT
0205 help
0206 MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
0207 device parameters that affect performance and the ability to
0208 support hotplug and peer-to-peer DMA.
0209
0210 The following choices set the MPS and MRRS optimization strategy
0211 at compile-time. The choices are the same as those offered for
0212 the kernel command-line parameter 'pci', i.e.,
0213 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
0214 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
0215
0216 This is a compile-time setting and can be overridden by the above
0217 command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.
0218
0219 config PCIE_BUS_TUNE_OFF
0220 bool "Tune Off"
0221 depends on PCI
0222 help
0223 Use the BIOS defaults; don't touch MPS at all. This is the same
0224 as booting with 'pci=pcie_bus_tune_off'.
0225
0226 config PCIE_BUS_DEFAULT
0227 bool "Default"
0228 depends on PCI
0229 help
0230 Default choice; ensure that the MPS matches upstream bridge.
0231
0232 config PCIE_BUS_SAFE
0233 bool "Safe"
0234 depends on PCI
0235 help
0236 Use largest MPS that boot-time devices support. If you have a
0237 closed system with no possibility of adding new devices, this
0238 will use the largest MPS that's supported by all devices. This
0239 is the same as booting with 'pci=pcie_bus_safe'.
0240
0241 config PCIE_BUS_PERFORMANCE
0242 bool "Performance"
0243 depends on PCI
0244 help
0245 Use MPS and MRRS for best performance. Ensure that a given
0246 device's MPS is no larger than its parent MPS, which allows us to
0247 keep all switches/bridges to the max MPS supported by their
0248 parent. This is the same as booting with 'pci=pcie_bus_perf'.
0249
0250 config PCIE_BUS_PEER2PEER
0251 bool "Peer2peer"
0252 depends on PCI
0253 help
0254 Set MPS = 128 for all devices. MPS configuration effected by the
0255 other options could cause the MPS on one root port to be
0256 different than that of the MPS on another, which may cause
0257 hot-added devices or peer-to-peer DMA to fail. Set MPS to the
0258 smallest possible value (128B) system-wide to avoid these issues.
0259 This is the same as booting with 'pci=pcie_bus_peer2peer'.
0260
0261 endchoice
0262
0263 config VGA_ARB
0264 bool "VGA Arbitration" if EXPERT
0265 default y
0266 depends on (PCI && !S390)
0267 help
0268 Some "legacy" VGA devices implemented on PCI typically have the same
0269 hard-decoded addresses as they did on ISA. When multiple PCI devices
0270 are accessed at same time they need some kind of coordination. Please
0271 see Documentation/gpu/vgaarbiter.rst for more details. Select this to
0272 enable VGA arbiter.
0273
0274 config VGA_ARB_MAX_GPUS
0275 int "Maximum number of GPUs"
0276 default 16
0277 depends on VGA_ARB
0278 help
0279 Reserves space in the kernel to maintain resource locking for
0280 multiple GPUS. The overhead for each GPU is very small.
0281
0282 source "drivers/pci/hotplug/Kconfig"
0283 source "drivers/pci/controller/Kconfig"
0284 source "drivers/pci/endpoint/Kconfig"
0285 source "drivers/pci/switch/Kconfig"
0286
0287 endif