hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/pci/Kconfig
....@@ -3,11 +3,41 @@
33 # PCI configuration
44 #
55
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
+
24
+if PCI
25
+
26
+config PCI_DOMAINS
27
+ bool
28
+ depends on PCI
29
+
30
+config PCI_DOMAINS_GENERIC
31
+ bool
32
+ select PCI_DOMAINS
33
+
34
+config PCI_SYSCALL
35
+ bool
36
+
637 source "drivers/pci/pcie/Kconfig"
738
839 config PCI_MSI
940 bool "Message Signaled Interrupts (MSI and MSI-X)"
10
- depends on PCI
1141 select GENERIC_MSI_IRQ
1242 help
1343 This allows device drivers to enable MSI (Message Signaled
....@@ -22,14 +52,16 @@
2252 If you don't know what to do here, say Y.
2353
2454 config PCI_MSI_IRQ_DOMAIN
25
- def_bool ARC || ARM || ARM64 || X86
55
+ def_bool y
2656 depends on PCI_MSI
2757 select GENERIC_MSI_IRQ_DOMAIN
58
+
59
+config PCI_MSI_ARCH_FALLBACKS
60
+ bool
2861
2962 config PCI_QUIRKS
3063 default y
3164 bool "Enable PCI quirk workarounds" if EXPERT
32
- depends on PCI
3365 help
3466 This enables workarounds for various PCI chipset bugs/quirks.
3567 Disable this only if your target machine is unaffected by PCI
....@@ -37,7 +69,7 @@
3769
3870 config PCI_DEBUG
3971 bool "PCI Debugging"
40
- depends on PCI && DEBUG_KERNEL
72
+ depends on DEBUG_KERNEL
4173 help
4274 Say Y here if you want the PCI core to produce a bunch of debug
4375 messages to the system log. Select this if you are having a
....@@ -47,7 +79,6 @@
4779
4880 config PCI_REALLOC_ENABLE_AUTO
4981 bool "Enable PCI resource re-allocation detection"
50
- depends on PCI
5182 depends on PCI_IOV
5283 help
5384 Say Y here if you want the PCI core to detect if PCI resource
....@@ -60,7 +91,6 @@
6091
6192 config PCI_STUB
6293 tristate "PCI Stub driver"
63
- depends on PCI
6494 help
6595 Say Y or M here if you want be able to reserve a PCI device
6696 when it is going to be assigned to a guest operating system.
....@@ -69,25 +99,24 @@
6999
70100 config PCI_PF_STUB
71101 tristate "PCI PF Stub driver"
72
- depends on PCI
73102 depends on PCI_IOV
74103 help
75104 Say Y or M here if you want to enable support for devices that
76
- require SR-IOV support, while at the same time the PF itself is
77
- not providing any actual services on the host itself such as
78
- storage or networking.
105
+ require SR-IOV support, while at the same time the PF (Physical
106
+ Function) itself is not providing any actual services on the
107
+ host itself such as storage or networking.
79108
80109 When in doubt, say N.
81110
82111 config XEN_PCIDEV_FRONTEND
83
- tristate "Xen PCI Frontend"
84
- depends on PCI && X86 && XEN
85
- select PCI_XEN
112
+ tristate "Xen PCI Frontend"
113
+ depends on X86 && XEN
114
+ select PCI_XEN
86115 select XEN_XENBUS_FRONTEND
87
- default y
88
- help
89
- The PCI device frontend driver allows the kernel to import arbitrary
90
- PCI devices from a PCI backend to support PCI driver domains.
116
+ default y
117
+ help
118
+ The PCI device frontend driver allows the kernel to import arbitrary
119
+ PCI devices from a PCI backend to support PCI driver domains.
91120
92121 config PCI_ATS
93122 bool
....@@ -98,9 +127,11 @@
98127 config PCI_LOCKLESS_CONFIG
99128 bool
100129
130
+config PCI_BRIDGE_EMUL
131
+ bool
132
+
101133 config PCI_IOV
102134 bool "PCI IOV support"
103
- depends on PCI
104135 select PCI_ATS
105136 help
106137 I/O Virtualization is a PCI feature supported by some devices
....@@ -111,7 +142,6 @@
111142
112143 config PCI_PRI
113144 bool "PCI PRI support"
114
- depends on PCI
115145 select PCI_ATS
116146 help
117147 PRI is the PCI Page Request Interface. It allows PCI devices that are
....@@ -121,7 +151,6 @@
121151
122152 config PCI_PASID
123153 bool "PCI PASID support"
124
- depends on PCI
125154 select PCI_ATS
126155 help
127156 Process Address Space Identifiers (PASIDs) can be used by PCI devices
....@@ -132,19 +161,100 @@
132161
133162 If unsure, say N.
134163
164
+config PCI_P2PDMA
165
+ bool "PCI peer-to-peer transfer support"
166
+ depends on ZONE_DEVICE
167
+ select GENERIC_ALLOCATOR
168
+ help
169
+ Enableѕ drivers to do PCI peer-to-peer transactions to and from
170
+ BARs that are exposed in other devices that are the part of
171
+ the hierarchy where peer-to-peer DMA is guaranteed by the PCI
172
+ specification to work (ie. anything below a single PCI bridge).
173
+
174
+ Many PCIe root complexes do not support P2P transactions and
175
+ it's hard to tell which support it at all, so at this time,
176
+ P2P DMA transactions must be between devices behind the same root
177
+ port.
178
+
179
+ If unsure, say N.
180
+
135181 config PCI_LABEL
136182 def_bool y if (DMI || ACPI)
137
- depends on PCI
138183 select NLS
139184
140185 config PCI_HYPERV
141
- tristate "Hyper-V PCI Frontend"
142
- depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
143
- help
144
- The PCI device frontend driver allows the kernel to import arbitrary
145
- PCI devices from a PCI backend to support PCI driver domains.
186
+ tristate "Hyper-V PCI Frontend"
187
+ depends on X86_64 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
188
+ select PCI_HYPERV_INTERFACE
189
+ help
190
+ The PCI device frontend driver allows the kernel to import arbitrary
191
+ PCI devices from a PCI backend to support PCI driver domains.
192
+
193
+choice
194
+ prompt "PCI Express hierarchy optimization setting"
195
+ default PCIE_BUS_DEFAULT
196
+ depends on PCI && EXPERT
197
+ help
198
+ MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
199
+ device parameters that affect performance and the ability to
200
+ support hotplug and peer-to-peer DMA.
201
+
202
+ The following choices set the MPS and MRRS optimization strategy
203
+ at compile-time. The choices are the same as those offered for
204
+ the kernel command-line parameter 'pci', i.e.,
205
+ 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
206
+ 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
207
+
208
+ This is a compile-time setting and can be overridden by the above
209
+ command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.
210
+
211
+config PCIE_BUS_TUNE_OFF
212
+ bool "Tune Off"
213
+ depends on PCI
214
+ help
215
+ Use the BIOS defaults; don't touch MPS at all. This is the same
216
+ as booting with 'pci=pcie_bus_tune_off'.
217
+
218
+config PCIE_BUS_DEFAULT
219
+ bool "Default"
220
+ depends on PCI
221
+ help
222
+ Default choice; ensure that the MPS matches upstream bridge.
223
+
224
+config PCIE_BUS_SAFE
225
+ bool "Safe"
226
+ depends on PCI
227
+ help
228
+ Use largest MPS that boot-time devices support. If you have a
229
+ closed system with no possibility of adding new devices, this
230
+ will use the largest MPS that's supported by all devices. This
231
+ is the same as booting with 'pci=pcie_bus_safe'.
232
+
233
+config PCIE_BUS_PERFORMANCE
234
+ bool "Performance"
235
+ depends on PCI
236
+ help
237
+ Use MPS and MRRS for best performance. Ensure that a given
238
+ device's MPS is no larger than its parent MPS, which allows us to
239
+ keep all switches/bridges to the max MPS supported by their
240
+ parent. This is the same as booting with 'pci=pcie_bus_perf'.
241
+
242
+config PCIE_BUS_PEER2PEER
243
+ bool "Peer2peer"
244
+ depends on PCI
245
+ help
246
+ Set MPS = 128 for all devices. MPS configuration effected by the
247
+ other options could cause the MPS on one root port to be
248
+ different than that of the MPS on another, which may cause
249
+ hot-added devices or peer-to-peer DMA to fail. Set MPS to the
250
+ smallest possible value (128B) system-wide to avoid these issues.
251
+ This is the same as booting with 'pci=pcie_bus_peer2peer'.
252
+
253
+endchoice
146254
147255 source "drivers/pci/hotplug/Kconfig"
148256 source "drivers/pci/controller/Kconfig"
149257 source "drivers/pci/endpoint/Kconfig"
150258 source "drivers/pci/switch/Kconfig"
259
+
260
+endif