xref: /openbmc/linux/drivers/pci/Kconfig (revision eb01d42a)
1# SPDX-License-Identifier: GPL-2.0
2#
3# PCI configuration
4#
5
6# select this to offer the PCI prompt
7config HAVE_PCI
8	bool
9
10# select this to unconditionally force on PCI support
11config FORCE_PCI
12	bool
13	select HAVE_PCI
14	select PCI
15
16menuconfig 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
24source "drivers/pci/pcie/Kconfig"
25
26config PCI_MSI
27	bool "Message Signaled Interrupts (MSI and MSI-X)"
28	depends on PCI
29	select GENERIC_MSI_IRQ
30	help
31	   This allows device drivers to enable MSI (Message Signaled
32	   Interrupts).  Message Signaled Interrupts enable a device to
33	   generate an interrupt using an inbound Memory Write on its
34	   PCI bus instead of asserting a device IRQ pin.
35
36	   Use of PCI MSI interrupts can be disabled at kernel boot time
37	   by using the 'pci=nomsi' option.  This disables MSI for the
38	   entire system.
39
40	   If you don't know what to do here, say Y.
41
42config PCI_MSI_IRQ_DOMAIN
43	def_bool ARC || ARM || ARM64 || X86
44	depends on PCI_MSI
45	select GENERIC_MSI_IRQ_DOMAIN
46
47config PCI_QUIRKS
48	default y
49	bool "Enable PCI quirk workarounds" if EXPERT
50	depends on PCI
51	help
52	  This enables workarounds for various PCI chipset bugs/quirks.
53	  Disable this only if your target machine is unaffected by PCI
54	  quirks.
55
56config PCI_DEBUG
57	bool "PCI Debugging"
58	depends on PCI && DEBUG_KERNEL
59	help
60	  Say Y here if you want the PCI core to produce a bunch of debug
61	  messages to the system log.  Select this if you are having a
62	  problem with PCI support and want to see more of what is going on.
63
64	  When in doubt, say N.
65
66config PCI_REALLOC_ENABLE_AUTO
67	bool "Enable PCI resource re-allocation detection"
68	depends on PCI
69	depends on PCI_IOV
70	help
71	  Say Y here if you want the PCI core to detect if PCI resource
72	  re-allocation needs to be enabled. You can always use pci=realloc=on
73	  or pci=realloc=off to override it.  It will automatically
74	  re-allocate PCI resources if SR-IOV BARs have not been allocated by
75	  the BIOS.
76
77	  When in doubt, say N.
78
79config PCI_STUB
80	tristate "PCI Stub driver"
81	depends on PCI
82	help
83	  Say Y or M here if you want be able to reserve a PCI device
84	  when it is going to be assigned to a guest operating system.
85
86	  When in doubt, say N.
87
88config PCI_PF_STUB
89	tristate "PCI PF Stub driver"
90	depends on PCI
91	depends on PCI_IOV
92	help
93	  Say Y or M here if you want to enable support for devices that
94	  require SR-IOV support, while at the same time the PF itself is
95	  not providing any actual services on the host itself such as
96	  storage or networking.
97
98	  When in doubt, say N.
99
100config XEN_PCIDEV_FRONTEND
101        tristate "Xen PCI Frontend"
102        depends on PCI && X86 && XEN
103        select PCI_XEN
104	select XEN_XENBUS_FRONTEND
105        default y
106        help
107          The PCI device frontend driver allows the kernel to import arbitrary
108          PCI devices from a PCI backend to support PCI driver domains.
109
110config PCI_ATS
111	bool
112
113config PCI_ECAM
114	bool
115
116config PCI_LOCKLESS_CONFIG
117	bool
118
119config PCI_BRIDGE_EMUL
120	bool
121
122config PCI_IOV
123	bool "PCI IOV support"
124	depends on PCI
125	select PCI_ATS
126	help
127	  I/O Virtualization is a PCI feature supported by some devices
128	  which allows them to create virtual devices which share their
129	  physical resources.
130
131	  If unsure, say N.
132
133config PCI_PRI
134	bool "PCI PRI support"
135	depends on PCI
136	select PCI_ATS
137	help
138	  PRI is the PCI Page Request Interface. It allows PCI devices that are
139	  behind an IOMMU to recover from page faults.
140
141	  If unsure, say N.
142
143config PCI_PASID
144	bool "PCI PASID support"
145	depends on PCI
146	select PCI_ATS
147	help
148	  Process Address Space Identifiers (PASIDs) can be used by PCI devices
149	  to access more than one IO address space at the same time. To make
150	  use of this feature an IOMMU is required which also supports PASIDs.
151	  Select this option if you have such an IOMMU and want to compile the
152	  driver for it into your kernel.
153
154	  If unsure, say N.
155
156config PCI_P2PDMA
157	bool "PCI peer-to-peer transfer support"
158	depends on PCI && ZONE_DEVICE
159	select GENERIC_ALLOCATOR
160	help
161	  Enableѕ drivers to do PCI peer-to-peer transactions to and from
162	  BARs that are exposed in other devices that are the part of
163	  the hierarchy where peer-to-peer DMA is guaranteed by the PCI
164	  specification to work (ie. anything below a single PCI bridge).
165
166	  Many PCIe root complexes do not support P2P transactions and
167	  it's hard to tell which support it at all, so at this time,
168	  P2P DMA transations must be between devices behind the same root
169	  port.
170
171	  If unsure, say N.
172
173config PCI_LABEL
174	def_bool y if (DMI || ACPI)
175	depends on PCI
176	select NLS
177
178config PCI_HYPERV
179        tristate "Hyper-V PCI Frontend"
180        depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
181        help
182          The PCI device frontend driver allows the kernel to import arbitrary
183          PCI devices from a PCI backend to support PCI driver domains.
184
185source "drivers/pci/hotplug/Kconfig"
186source "drivers/pci/controller/Kconfig"
187source "drivers/pci/endpoint/Kconfig"
188source "drivers/pci/switch/Kconfig"
189