xref: /linux/drivers/pci/Kconfig (revision eb01d42a77785ff96b6e66a2a2e7027fc6d78e4a)
17328c8f4SBjorn Helgaas# SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# PCI configuration
41da177e4SLinus Torvalds#
55f8fc432SBogicevic Sasa
6*eb01d42aSChristoph Hellwig# select this to offer the PCI prompt
7*eb01d42aSChristoph Hellwigconfig HAVE_PCI
8*eb01d42aSChristoph Hellwig	bool
9*eb01d42aSChristoph Hellwig
10*eb01d42aSChristoph Hellwig# select this to unconditionally force on PCI support
11*eb01d42aSChristoph Hellwigconfig FORCE_PCI
12*eb01d42aSChristoph Hellwig	bool
13*eb01d42aSChristoph Hellwig	select HAVE_PCI
14*eb01d42aSChristoph Hellwig	select PCI
15*eb01d42aSChristoph Hellwig
16*eb01d42aSChristoph Hellwigmenuconfig PCI
17*eb01d42aSChristoph Hellwig	bool "PCI support"
18*eb01d42aSChristoph Hellwig	depends on HAVE_PCI
19*eb01d42aSChristoph Hellwig	help
20*eb01d42aSChristoph Hellwig	  This option enables support for the PCI local bus, including
21*eb01d42aSChristoph Hellwig	  support for PCI-X and the foundations for PCI Express support.
22*eb01d42aSChristoph Hellwig	  Say 'Y' here unless you know what you are doing.
23*eb01d42aSChristoph Hellwig
245f8fc432SBogicevic Sasasource "drivers/pci/pcie/Kconfig"
255f8fc432SBogicevic Sasa
261da177e4SLinus Torvaldsconfig PCI_MSI
271da177e4SLinus Torvalds	bool "Message Signaled Interrupts (MSI and MSI-X)"
281da177e4SLinus Torvalds	depends on PCI
2938b6a1cfSJiang Liu	select GENERIC_MSI_IRQ
301da177e4SLinus Torvalds	help
311da177e4SLinus Torvalds	   This allows device drivers to enable MSI (Message Signaled
321da177e4SLinus Torvalds	   Interrupts).  Message Signaled Interrupts enable a device to
331da177e4SLinus Torvalds	   generate an interrupt using an inbound Memory Write on its
341da177e4SLinus Torvalds	   PCI bus instead of asserting a device IRQ pin.
351da177e4SLinus Torvalds
36309e57dfSMatthew Wilcox	   Use of PCI MSI interrupts can be disabled at kernel boot time
37309e57dfSMatthew Wilcox	   by using the 'pci=nomsi' option.  This disables MSI for the
38309e57dfSMatthew Wilcox	   entire system.
39309e57dfSMatthew Wilcox
403196180aSJesse Barnes	   If you don't know what to do here, say Y.
411da177e4SLinus Torvalds
423878eaefSJiang Liuconfig PCI_MSI_IRQ_DOMAIN
43f8430eaeSJoao Pinto	def_bool ARC || ARM || ARM64 || X86
443878eaefSJiang Liu	depends on PCI_MSI
453878eaefSJiang Liu	select GENERIC_MSI_IRQ_DOMAIN
463878eaefSJiang Liu
4703ea2263SRandy Dunlapconfig PCI_QUIRKS
4803ea2263SRandy Dunlap	default y
4903ea2263SRandy Dunlap	bool "Enable PCI quirk workarounds" if EXPERT
5003ea2263SRandy Dunlap	depends on PCI
5103ea2263SRandy Dunlap	help
5203ea2263SRandy Dunlap	  This enables workarounds for various PCI chipset bugs/quirks.
5303ea2263SRandy Dunlap	  Disable this only if your target machine is unaffected by PCI
5403ea2263SRandy Dunlap	  quirks.
5503ea2263SRandy Dunlap
561da177e4SLinus Torvaldsconfig PCI_DEBUG
571da177e4SLinus Torvalds	bool "PCI Debugging"
581da177e4SLinus Torvalds	depends on PCI && DEBUG_KERNEL
591da177e4SLinus Torvalds	help
601da177e4SLinus Torvalds	  Say Y here if you want the PCI core to produce a bunch of debug
611da177e4SLinus Torvalds	  messages to the system log.  Select this if you are having a
621da177e4SLinus Torvalds	  problem with PCI support and want to see more of what is going on.
631da177e4SLinus Torvalds
641da177e4SLinus Torvalds	  When in doubt, say N.
651da177e4SLinus Torvalds
66b07f2ebcSYinghai Luconfig PCI_REALLOC_ENABLE_AUTO
67b07f2ebcSYinghai Lu	bool "Enable PCI resource re-allocation detection"
68b07f2ebcSYinghai Lu	depends on PCI
69ad581f86SSascha El-Sharkawy	depends on PCI_IOV
70b07f2ebcSYinghai Lu	help
71b07f2ebcSYinghai Lu	  Say Y here if you want the PCI core to detect if PCI resource
72b07f2ebcSYinghai Lu	  re-allocation needs to be enabled. You can always use pci=realloc=on
73ad581f86SSascha El-Sharkawy	  or pci=realloc=off to override it.  It will automatically
74ad581f86SSascha El-Sharkawy	  re-allocate PCI resources if SR-IOV BARs have not been allocated by
75ad581f86SSascha El-Sharkawy	  the BIOS.
76b07f2ebcSYinghai Lu
77b07f2ebcSYinghai Lu	  When in doubt, say N.
78b07f2ebcSYinghai Lu
79c70e0d9dSChris Wrightconfig PCI_STUB
80c70e0d9dSChris Wright	tristate "PCI Stub driver"
81c70e0d9dSChris Wright	depends on PCI
82c70e0d9dSChris Wright	help
83c70e0d9dSChris Wright	  Say Y or M here if you want be able to reserve a PCI device
84c70e0d9dSChris Wright	  when it is going to be assigned to a guest operating system.
85c70e0d9dSChris Wright
86c70e0d9dSChris Wright	  When in doubt, say N.
87c70e0d9dSChris Wright
88a8ccf8a6SAlexander Duyckconfig PCI_PF_STUB
89a8ccf8a6SAlexander Duyck	tristate "PCI PF Stub driver"
90a8ccf8a6SAlexander Duyck	depends on PCI
91a8ccf8a6SAlexander Duyck	depends on PCI_IOV
92a8ccf8a6SAlexander Duyck	help
93a8ccf8a6SAlexander Duyck	  Say Y or M here if you want to enable support for devices that
94a8ccf8a6SAlexander Duyck	  require SR-IOV support, while at the same time the PF itself is
95a8ccf8a6SAlexander Duyck	  not providing any actual services on the host itself such as
96a8ccf8a6SAlexander Duyck	  storage or networking.
97a8ccf8a6SAlexander Duyck
98a8ccf8a6SAlexander Duyck	  When in doubt, say N.
99a8ccf8a6SAlexander Duyck
100956a9202SRyan Wilsonconfig XEN_PCIDEV_FRONTEND
101956a9202SRyan Wilson        tristate "Xen PCI Frontend"
102956a9202SRyan Wilson        depends on PCI && X86 && XEN
103956a9202SRyan Wilson        select PCI_XEN
104fce263c1SKonrad Rzeszutek Wilk	select XEN_XENBUS_FRONTEND
105956a9202SRyan Wilson        default y
106956a9202SRyan Wilson        help
107956a9202SRyan Wilson          The PCI device frontend driver allows the kernel to import arbitrary
108956a9202SRyan Wilson          PCI devices from a PCI backend to support PCI driver domains.
109956a9202SRyan Wilson
110db3c33c6SJoerg Roedelconfig PCI_ATS
111db3c33c6SJoerg Roedel	bool
112db3c33c6SJoerg Roedel
11335ff9477SJayachandran Cconfig PCI_ECAM
11435ff9477SJayachandran C	bool
11535ff9477SJayachandran C
116714fe383SThomas Gleixnerconfig PCI_LOCKLESS_CONFIG
117714fe383SThomas Gleixner	bool
118714fe383SThomas Gleixner
11923a5fba4SThomas Petazzoniconfig PCI_BRIDGE_EMUL
12023a5fba4SThomas Petazzoni	bool
12123a5fba4SThomas Petazzoni
122d1b054daSYu Zhaoconfig PCI_IOV
123d1b054daSYu Zhao	bool "PCI IOV support"
124d1b054daSYu Zhao	depends on PCI
125db3c33c6SJoerg Roedel	select PCI_ATS
126d1b054daSYu Zhao	help
127d1b054daSYu Zhao	  I/O Virtualization is a PCI feature supported by some devices
128d1b054daSYu Zhao	  which allows them to create virtual devices which share their
129d1b054daSYu Zhao	  physical resources.
130d1b054daSYu Zhao
131d1b054daSYu Zhao	  If unsure, say N.
132204d49a5SBjorn Helgaas
133c320b976SJoerg Roedelconfig PCI_PRI
134c320b976SJoerg Roedel	bool "PCI PRI support"
135c54420d3SJoerg Roedel	depends on PCI
136c320b976SJoerg Roedel	select PCI_ATS
137c320b976SJoerg Roedel	help
138c320b976SJoerg Roedel	  PRI is the PCI Page Request Interface. It allows PCI devices that are
139c320b976SJoerg Roedel	  behind an IOMMU to recover from page faults.
140c320b976SJoerg Roedel
141c320b976SJoerg Roedel	  If unsure, say N.
142c320b976SJoerg Roedel
143086ac11fSJoerg Roedelconfig PCI_PASID
144086ac11fSJoerg Roedel	bool "PCI PASID support"
145086ac11fSJoerg Roedel	depends on PCI
146086ac11fSJoerg Roedel	select PCI_ATS
147086ac11fSJoerg Roedel	help
148086ac11fSJoerg Roedel	  Process Address Space Identifiers (PASIDs) can be used by PCI devices
149086ac11fSJoerg Roedel	  to access more than one IO address space at the same time. To make
150086ac11fSJoerg Roedel	  use of this feature an IOMMU is required which also supports PASIDs.
151086ac11fSJoerg Roedel	  Select this option if you have such an IOMMU and want to compile the
152086ac11fSJoerg Roedel	  driver for it into your kernel.
153086ac11fSJoerg Roedel
154086ac11fSJoerg Roedel	  If unsure, say N.
155086ac11fSJoerg Roedel
15652916982SLogan Gunthorpeconfig PCI_P2PDMA
15752916982SLogan Gunthorpe	bool "PCI peer-to-peer transfer support"
15852916982SLogan Gunthorpe	depends on PCI && ZONE_DEVICE
15952916982SLogan Gunthorpe	select GENERIC_ALLOCATOR
16052916982SLogan Gunthorpe	help
16152916982SLogan Gunthorpe	  Enableѕ drivers to do PCI peer-to-peer transactions to and from
16252916982SLogan Gunthorpe	  BARs that are exposed in other devices that are the part of
16352916982SLogan Gunthorpe	  the hierarchy where peer-to-peer DMA is guaranteed by the PCI
16452916982SLogan Gunthorpe	  specification to work (ie. anything below a single PCI bridge).
16552916982SLogan Gunthorpe
16652916982SLogan Gunthorpe	  Many PCIe root complexes do not support P2P transactions and
16752916982SLogan Gunthorpe	  it's hard to tell which support it at all, so at this time,
16852916982SLogan Gunthorpe	  P2P DMA transations must be between devices behind the same root
16952916982SLogan Gunthorpe	  port.
17052916982SLogan Gunthorpe
17152916982SLogan Gunthorpe	  If unsure, say N.
17252916982SLogan Gunthorpe
1738a226e00SRandy Dunlapconfig PCI_LABEL
1748a226e00SRandy Dunlap	def_bool y if (DMI || ACPI)
1759de0eec2SCyrille Pitchen	depends on PCI
1768a226e00SRandy Dunlap	select NLS
17745361a4fSThomas Petazzoni
1784daace0dSJake Oshinsconfig PCI_HYPERV
1794daace0dSJake Oshins        tristate "Hyper-V PCI Frontend"
1804daace0dSJake Oshins        depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
1814daace0dSJake Oshins        help
1824daace0dSJake Oshins          The PCI device frontend driver allows the kernel to import arbitrary
1834daace0dSJake Oshins          PCI devices from a PCI backend to support PCI driver domains.
1844daace0dSJake Oshins
18530b5b880STero Roponensource "drivers/pci/hotplug/Kconfig"
1866e0832faSShawn Linsource "drivers/pci/controller/Kconfig"
1875e8cb403SKishon Vijay Abraham Isource "drivers/pci/endpoint/Kconfig"
188080b47deSLogan Gunthorpesource "drivers/pci/switch/Kconfig"
189