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