Commit | Line | Data |
---|---|---|
7328c8f4 | 1 | # SPDX-License-Identifier: GPL-2.0 |
1da177e4 LT |
2 | # |
3 | # PCI configuration | |
4 | # | |
5f8fc432 | 5 | |
eb01d42a CH |
6 | # select this to offer the PCI prompt |
7 | config HAVE_PCI | |
8 | bool | |
9 | ||
10 | # select this to unconditionally force on PCI support | |
11 | config FORCE_PCI | |
12 | bool | |
13 | select HAVE_PCI | |
14 | select PCI | |
15 | ||
16 | menuconfig PCI | |
17 | bool "PCI support" | |
18 | depends on HAVE_PCI | |
19 | help | |
20 | This option enables support for the PCI local bus, including | |
21 | support for PCI-X and the foundations for PCI Express support. | |
22 | Say 'Y' here unless you know what you are doing. | |
23 | ||
2e8cb2cf RH |
24 | if PCI |
25 | ||
2eac9c2d CH |
26 | config PCI_DOMAINS |
27 | bool | |
28 | depends on PCI | |
29 | ||
30 | config PCI_DOMAINS_GENERIC | |
31 | bool | |
2eac9c2d CH |
32 | select PCI_DOMAINS |
33 | ||
20f1b79d CH |
34 | config PCI_SYSCALL |
35 | bool | |
36 | ||
5f8fc432 BS |
37 | source "drivers/pci/pcie/Kconfig" |
38 | ||
1da177e4 LT |
39 | config PCI_MSI |
40 | bool "Message Signaled Interrupts (MSI and MSI-X)" | |
38b6a1cf | 41 | select GENERIC_MSI_IRQ |
1da177e4 LT |
42 | help |
43 | This allows device drivers to enable MSI (Message Signaled | |
44 | Interrupts). Message Signaled Interrupts enable a device to | |
45 | generate an interrupt using an inbound Memory Write on its | |
46 | PCI bus instead of asserting a device IRQ pin. | |
47 | ||
309e57df MW |
48 | Use of PCI MSI interrupts can be disabled at kernel boot time |
49 | by using the 'pci=nomsi' option. This disables MSI for the | |
50 | entire system. | |
51 | ||
3196180a | 52 | If you don't know what to do here, say Y. |
1da177e4 | 53 | |
077ee78e TG |
54 | config PCI_MSI_ARCH_FALLBACKS |
55 | bool | |
56 | ||
03ea2263 RD |
57 | config PCI_QUIRKS |
58 | default y | |
59 | bool "Enable PCI quirk workarounds" if EXPERT | |
03ea2263 RD |
60 | help |
61 | This enables workarounds for various PCI chipset bugs/quirks. | |
62 | Disable this only if your target machine is unaffected by PCI | |
63 | quirks. | |
64 | ||
1da177e4 LT |
65 | config PCI_DEBUG |
66 | bool "PCI Debugging" | |
2e8cb2cf | 67 | depends on DEBUG_KERNEL |
1da177e4 LT |
68 | help |
69 | Say Y here if you want the PCI core to produce a bunch of debug | |
70 | messages to the system log. Select this if you are having a | |
71 | problem with PCI support and want to see more of what is going on. | |
72 | ||
73 | When in doubt, say N. | |
74 | ||
b07f2ebc YL |
75 | config PCI_REALLOC_ENABLE_AUTO |
76 | bool "Enable PCI resource re-allocation detection" | |
ad581f86 | 77 | depends on PCI_IOV |
b07f2ebc YL |
78 | help |
79 | Say Y here if you want the PCI core to detect if PCI resource | |
80 | re-allocation needs to be enabled. You can always use pci=realloc=on | |
ad581f86 SES |
81 | or pci=realloc=off to override it. It will automatically |
82 | re-allocate PCI resources if SR-IOV BARs have not been allocated by | |
83 | the BIOS. | |
b07f2ebc YL |
84 | |
85 | When in doubt, say N. | |
86 | ||
c70e0d9d CW |
87 | config PCI_STUB |
88 | tristate "PCI Stub driver" | |
c70e0d9d CW |
89 | help |
90 | Say Y or M here if you want be able to reserve a PCI device | |
91 | when it is going to be assigned to a guest operating system. | |
92 | ||
93 | When in doubt, say N. | |
94 | ||
a8ccf8a6 AD |
95 | config PCI_PF_STUB |
96 | tristate "PCI PF Stub driver" | |
a8ccf8a6 AD |
97 | depends on PCI_IOV |
98 | help | |
99 | Say Y or M here if you want to enable support for devices that | |
4a57f58f RD |
100 | require SR-IOV support, while at the same time the PF (Physical |
101 | Function) itself is not providing any actual services on the | |
102 | host itself such as storage or networking. | |
a8ccf8a6 AD |
103 | |
104 | When in doubt, say N. | |
105 | ||
956a9202 | 106 | config XEN_PCIDEV_FRONTEND |
36533f35 | 107 | tristate "Xen PCI Frontend" |
e243ae95 | 108 | depends on XEN_PV |
36533f35 | 109 | select PCI_XEN |
fce263c1 | 110 | select XEN_XENBUS_FRONTEND |
36533f35 KK |
111 | default y |
112 | help | |
113 | The PCI device frontend driver allows the kernel to import arbitrary | |
114 | PCI devices from a PCI backend to support PCI driver domains. | |
956a9202 | 115 | |
db3c33c6 JR |
116 | config PCI_ATS |
117 | bool | |
118 | ||
9d24322e JC |
119 | config PCI_DOE |
120 | bool | |
121 | ||
35ff9477 J |
122 | config PCI_ECAM |
123 | bool | |
124 | ||
714fe383 TG |
125 | config PCI_LOCKLESS_CONFIG |
126 | bool | |
127 | ||
23a5fba4 TP |
128 | config PCI_BRIDGE_EMUL |
129 | bool | |
714fe383 | 130 | |
d1b054da YZ |
131 | config PCI_IOV |
132 | bool "PCI IOV support" | |
db3c33c6 | 133 | select PCI_ATS |
d1b054da YZ |
134 | help |
135 | I/O Virtualization is a PCI feature supported by some devices | |
136 | which allows them to create virtual devices which share their | |
137 | physical resources. | |
138 | ||
139 | If unsure, say N. | |
204d49a5 | 140 | |
c320b976 JR |
141 | config PCI_PRI |
142 | bool "PCI PRI support" | |
143 | select PCI_ATS | |
144 | help | |
145 | PRI is the PCI Page Request Interface. It allows PCI devices that are | |
146 | behind an IOMMU to recover from page faults. | |
147 | ||
148 | If unsure, say N. | |
149 | ||
086ac11f JR |
150 | config PCI_PASID |
151 | bool "PCI PASID support" | |
086ac11f JR |
152 | select PCI_ATS |
153 | help | |
154 | Process Address Space Identifiers (PASIDs) can be used by PCI devices | |
155 | to access more than one IO address space at the same time. To make | |
156 | use of this feature an IOMMU is required which also supports PASIDs. | |
157 | Select this option if you have such an IOMMU and want to compile the | |
158 | driver for it into your kernel. | |
159 | ||
160 | If unsure, say N. | |
161 | ||
52916982 LG |
162 | config PCI_P2PDMA |
163 | bool "PCI peer-to-peer transfer support" | |
2e8cb2cf | 164 | depends on ZONE_DEVICE |
42399301 LG |
165 | # |
166 | # The need for the scatterlist DMA bus address flag means PCI P2PDMA | |
167 | # requires 64bit | |
168 | # | |
169 | depends on 64BIT | |
52916982 | 170 | select GENERIC_ALLOCATOR |
af2880ec | 171 | select NEED_SG_DMA_FLAGS |
52916982 LG |
172 | help |
173 | Enableѕ drivers to do PCI peer-to-peer transactions to and from | |
174 | BARs that are exposed in other devices that are the part of | |
175 | the hierarchy where peer-to-peer DMA is guaranteed by the PCI | |
176 | specification to work (ie. anything below a single PCI bridge). | |
177 | ||
178 | Many PCIe root complexes do not support P2P transactions and | |
179 | it's hard to tell which support it at all, so at this time, | |
d1bbf38a | 180 | P2P DMA transactions must be between devices behind the same root |
52916982 LG |
181 | port. |
182 | ||
183 | If unsure, say N. | |
184 | ||
8a226e00 RD |
185 | config PCI_LABEL |
186 | def_bool y if (DMI || ACPI) | |
187 | select NLS | |
45361a4f | 188 | |
4daace0d | 189 | config PCI_HYPERV |
36533f35 | 190 | tristate "Hyper-V PCI Frontend" |
a474d3fb | 191 | depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && SYSFS |
348dd93e | 192 | select PCI_HYPERV_INTERFACE |
36533f35 KK |
193 | help |
194 | The PCI device frontend driver allows the kernel to import arbitrary | |
195 | PCI devices from a PCI backend to support PCI driver domains. | |
4daace0d | 196 | |
407d1a51 LH |
197 | config PCI_DYNAMIC_OF_NODES |
198 | bool "Create Device tree nodes for PCI devices" | |
199 | depends on OF | |
200 | select OF_DYNAMIC | |
201 | help | |
202 | This option enables support for generating device tree nodes for some | |
203 | PCI devices. Thus, the driver of this kind can load and overlay | |
204 | flattened device tree for its downstream devices. | |
205 | ||
206 | Once this option is selected, the device tree nodes will be generated | |
207 | for all PCI bridges. | |
208 | ||
b0e85c3c JQ |
209 | choice |
210 | prompt "PCI Express hierarchy optimization setting" | |
211 | default PCIE_BUS_DEFAULT | |
212 | depends on PCI && EXPERT | |
213 | help | |
214 | MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe | |
215 | device parameters that affect performance and the ability to | |
216 | support hotplug and peer-to-peer DMA. | |
217 | ||
218 | The following choices set the MPS and MRRS optimization strategy | |
219 | at compile-time. The choices are the same as those offered for | |
220 | the kernel command-line parameter 'pci', i.e., | |
221 | 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe', | |
222 | 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'. | |
223 | ||
224 | This is a compile-time setting and can be overridden by the above | |
225 | command-line parameters. If unsure, choose PCIE_BUS_DEFAULT. | |
226 | ||
227 | config PCIE_BUS_TUNE_OFF | |
228 | bool "Tune Off" | |
229 | depends on PCI | |
230 | help | |
231 | Use the BIOS defaults; don't touch MPS at all. This is the same | |
232 | as booting with 'pci=pcie_bus_tune_off'. | |
233 | ||
234 | config PCIE_BUS_DEFAULT | |
235 | bool "Default" | |
236 | depends on PCI | |
237 | help | |
238 | Default choice; ensure that the MPS matches upstream bridge. | |
239 | ||
240 | config PCIE_BUS_SAFE | |
241 | bool "Safe" | |
242 | depends on PCI | |
243 | help | |
244 | Use largest MPS that boot-time devices support. If you have a | |
245 | closed system with no possibility of adding new devices, this | |
246 | will use the largest MPS that's supported by all devices. This | |
247 | is the same as booting with 'pci=pcie_bus_safe'. | |
248 | ||
249 | config PCIE_BUS_PERFORMANCE | |
250 | bool "Performance" | |
251 | depends on PCI | |
252 | help | |
253 | Use MPS and MRRS for best performance. Ensure that a given | |
254 | device's MPS is no larger than its parent MPS, which allows us to | |
255 | keep all switches/bridges to the max MPS supported by their | |
256 | parent. This is the same as booting with 'pci=pcie_bus_perf'. | |
257 | ||
258 | config PCIE_BUS_PEER2PEER | |
259 | bool "Peer2peer" | |
260 | depends on PCI | |
261 | help | |
262 | Set MPS = 128 for all devices. MPS configuration effected by the | |
263 | other options could cause the MPS on one root port to be | |
264 | different than that of the MPS on another, which may cause | |
265 | hot-added devices or peer-to-peer DMA to fail. Set MPS to the | |
266 | smallest possible value (128B) system-wide to avoid these issues. | |
267 | This is the same as booting with 'pci=pcie_bus_peer2peer'. | |
268 | ||
269 | endchoice | |
270 | ||
1d38fe6e BH |
271 | config VGA_ARB |
272 | bool "VGA Arbitration" if EXPERT | |
273 | default y | |
274 | depends on (PCI && !S390) | |
275 | help | |
276 | Some "legacy" VGA devices implemented on PCI typically have the same | |
277 | hard-decoded addresses as they did on ISA. When multiple PCI devices | |
278 | are accessed at same time they need some kind of coordination. Please | |
279 | see Documentation/gpu/vgaarbiter.rst for more details. Select this to | |
280 | enable VGA arbiter. | |
281 | ||
282 | config VGA_ARB_MAX_GPUS | |
283 | int "Maximum number of GPUs" | |
284 | default 16 | |
285 | depends on VGA_ARB | |
286 | help | |
287 | Reserves space in the kernel to maintain resource locking for | |
288 | multiple GPUS. The overhead for each GPU is very small. | |
289 | ||
30b5b880 | 290 | source "drivers/pci/hotplug/Kconfig" |
6e0832fa | 291 | source "drivers/pci/controller/Kconfig" |
5e8cb403 | 292 | source "drivers/pci/endpoint/Kconfig" |
080b47de | 293 | source "drivers/pci/switch/Kconfig" |
2e8cb2cf RH |
294 | |
295 | endif |