xref: /linux/drivers/pci/Kconfig (revision 20f1b79d33590dfe8dfdac52a683c7d96e3d101f)
17328c8f4SBjorn Helgaas# SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# PCI configuration
41da177e4SLinus Torvalds#
55f8fc432SBogicevic Sasa
6eb01d42aSChristoph Hellwig# select this to offer the PCI prompt
7eb01d42aSChristoph Hellwigconfig HAVE_PCI
8eb01d42aSChristoph Hellwig	bool
9eb01d42aSChristoph Hellwig
10eb01d42aSChristoph Hellwig# select this to unconditionally force on PCI support
11eb01d42aSChristoph Hellwigconfig FORCE_PCI
12eb01d42aSChristoph Hellwig	bool
13eb01d42aSChristoph Hellwig	select HAVE_PCI
14eb01d42aSChristoph Hellwig	select PCI
15eb01d42aSChristoph Hellwig
16eb01d42aSChristoph Hellwigmenuconfig PCI
17eb01d42aSChristoph Hellwig	bool "PCI support"
18eb01d42aSChristoph Hellwig	depends on HAVE_PCI
19eb01d42aSChristoph Hellwig	help
20eb01d42aSChristoph Hellwig	  This option enables support for the PCI local bus, including
21eb01d42aSChristoph Hellwig	  support for PCI-X and the foundations for PCI Express support.
22eb01d42aSChristoph Hellwig	  Say 'Y' here unless you know what you are doing.
23eb01d42aSChristoph Hellwig
242eac9c2dSChristoph Hellwigconfig PCI_DOMAINS
252eac9c2dSChristoph Hellwig	bool
262eac9c2dSChristoph Hellwig	depends on PCI
272eac9c2dSChristoph Hellwig
282eac9c2dSChristoph Hellwigconfig PCI_DOMAINS_GENERIC
292eac9c2dSChristoph Hellwig	bool
302eac9c2dSChristoph Hellwig	depends on PCI
312eac9c2dSChristoph Hellwig	select PCI_DOMAINS
322eac9c2dSChristoph Hellwig
33*20f1b79dSChristoph Hellwigconfig PCI_SYSCALL
34*20f1b79dSChristoph Hellwig	bool
35*20f1b79dSChristoph Hellwig
365f8fc432SBogicevic Sasasource "drivers/pci/pcie/Kconfig"
375f8fc432SBogicevic Sasa
381da177e4SLinus Torvaldsconfig PCI_MSI
391da177e4SLinus Torvalds	bool "Message Signaled Interrupts (MSI and MSI-X)"
401da177e4SLinus Torvalds	depends on PCI
4138b6a1cfSJiang Liu	select GENERIC_MSI_IRQ
421da177e4SLinus Torvalds	help
431da177e4SLinus Torvalds	   This allows device drivers to enable MSI (Message Signaled
441da177e4SLinus Torvalds	   Interrupts).  Message Signaled Interrupts enable a device to
451da177e4SLinus Torvalds	   generate an interrupt using an inbound Memory Write on its
461da177e4SLinus Torvalds	   PCI bus instead of asserting a device IRQ pin.
471da177e4SLinus Torvalds
48309e57dfSMatthew Wilcox	   Use of PCI MSI interrupts can be disabled at kernel boot time
49309e57dfSMatthew Wilcox	   by using the 'pci=nomsi' option.  This disables MSI for the
50309e57dfSMatthew Wilcox	   entire system.
51309e57dfSMatthew Wilcox
523196180aSJesse Barnes	   If you don't know what to do here, say Y.
531da177e4SLinus Torvalds
543878eaefSJiang Liuconfig PCI_MSI_IRQ_DOMAIN
55f8430eaeSJoao Pinto	def_bool ARC || ARM || ARM64 || X86
563878eaefSJiang Liu	depends on PCI_MSI
573878eaefSJiang Liu	select GENERIC_MSI_IRQ_DOMAIN
583878eaefSJiang Liu
5903ea2263SRandy Dunlapconfig PCI_QUIRKS
6003ea2263SRandy Dunlap	default y
6103ea2263SRandy Dunlap	bool "Enable PCI quirk workarounds" if EXPERT
6203ea2263SRandy Dunlap	depends on PCI
6303ea2263SRandy Dunlap	help
6403ea2263SRandy Dunlap	  This enables workarounds for various PCI chipset bugs/quirks.
6503ea2263SRandy Dunlap	  Disable this only if your target machine is unaffected by PCI
6603ea2263SRandy Dunlap	  quirks.
6703ea2263SRandy Dunlap
681da177e4SLinus Torvaldsconfig PCI_DEBUG
691da177e4SLinus Torvalds	bool "PCI Debugging"
701da177e4SLinus Torvalds	depends on PCI && DEBUG_KERNEL
711da177e4SLinus Torvalds	help
721da177e4SLinus Torvalds	  Say Y here if you want the PCI core to produce a bunch of debug
731da177e4SLinus Torvalds	  messages to the system log.  Select this if you are having a
741da177e4SLinus Torvalds	  problem with PCI support and want to see more of what is going on.
751da177e4SLinus Torvalds
761da177e4SLinus Torvalds	  When in doubt, say N.
771da177e4SLinus Torvalds
78b07f2ebcSYinghai Luconfig PCI_REALLOC_ENABLE_AUTO
79b07f2ebcSYinghai Lu	bool "Enable PCI resource re-allocation detection"
80b07f2ebcSYinghai Lu	depends on PCI
81ad581f86SSascha El-Sharkawy	depends on PCI_IOV
82b07f2ebcSYinghai Lu	help
83b07f2ebcSYinghai Lu	  Say Y here if you want the PCI core to detect if PCI resource
84b07f2ebcSYinghai Lu	  re-allocation needs to be enabled. You can always use pci=realloc=on
85ad581f86SSascha El-Sharkawy	  or pci=realloc=off to override it.  It will automatically
86ad581f86SSascha El-Sharkawy	  re-allocate PCI resources if SR-IOV BARs have not been allocated by
87ad581f86SSascha El-Sharkawy	  the BIOS.
88b07f2ebcSYinghai Lu
89b07f2ebcSYinghai Lu	  When in doubt, say N.
90b07f2ebcSYinghai Lu
91c70e0d9dSChris Wrightconfig PCI_STUB
92c70e0d9dSChris Wright	tristate "PCI Stub driver"
93c70e0d9dSChris Wright	depends on PCI
94c70e0d9dSChris Wright	help
95c70e0d9dSChris Wright	  Say Y or M here if you want be able to reserve a PCI device
96c70e0d9dSChris Wright	  when it is going to be assigned to a guest operating system.
97c70e0d9dSChris Wright
98c70e0d9dSChris Wright	  When in doubt, say N.
99c70e0d9dSChris Wright
100a8ccf8a6SAlexander Duyckconfig PCI_PF_STUB
101a8ccf8a6SAlexander Duyck	tristate "PCI PF Stub driver"
102a8ccf8a6SAlexander Duyck	depends on PCI
103a8ccf8a6SAlexander Duyck	depends on PCI_IOV
104a8ccf8a6SAlexander Duyck	help
105a8ccf8a6SAlexander Duyck	  Say Y or M here if you want to enable support for devices that
106a8ccf8a6SAlexander Duyck	  require SR-IOV support, while at the same time the PF itself is
107a8ccf8a6SAlexander Duyck	  not providing any actual services on the host itself such as
108a8ccf8a6SAlexander Duyck	  storage or networking.
109a8ccf8a6SAlexander Duyck
110a8ccf8a6SAlexander Duyck	  When in doubt, say N.
111a8ccf8a6SAlexander Duyck
112956a9202SRyan Wilsonconfig XEN_PCIDEV_FRONTEND
113956a9202SRyan Wilson        tristate "Xen PCI Frontend"
114956a9202SRyan Wilson        depends on PCI && X86 && XEN
115956a9202SRyan Wilson        select PCI_XEN
116fce263c1SKonrad Rzeszutek Wilk	select XEN_XENBUS_FRONTEND
117956a9202SRyan Wilson        default y
118956a9202SRyan Wilson        help
119956a9202SRyan Wilson          The PCI device frontend driver allows the kernel to import arbitrary
120956a9202SRyan Wilson          PCI devices from a PCI backend to support PCI driver domains.
121956a9202SRyan Wilson
122db3c33c6SJoerg Roedelconfig PCI_ATS
123db3c33c6SJoerg Roedel	bool
124db3c33c6SJoerg Roedel
12535ff9477SJayachandran Cconfig PCI_ECAM
12635ff9477SJayachandran C	bool
12735ff9477SJayachandran C
128714fe383SThomas Gleixnerconfig PCI_LOCKLESS_CONFIG
129714fe383SThomas Gleixner	bool
130714fe383SThomas Gleixner
13123a5fba4SThomas Petazzoniconfig PCI_BRIDGE_EMUL
13223a5fba4SThomas Petazzoni	bool
13323a5fba4SThomas Petazzoni
134d1b054daSYu Zhaoconfig PCI_IOV
135d1b054daSYu Zhao	bool "PCI IOV support"
136d1b054daSYu Zhao	depends on PCI
137db3c33c6SJoerg Roedel	select PCI_ATS
138d1b054daSYu Zhao	help
139d1b054daSYu Zhao	  I/O Virtualization is a PCI feature supported by some devices
140d1b054daSYu Zhao	  which allows them to create virtual devices which share their
141d1b054daSYu Zhao	  physical resources.
142d1b054daSYu Zhao
143d1b054daSYu Zhao	  If unsure, say N.
144204d49a5SBjorn Helgaas
145c320b976SJoerg Roedelconfig PCI_PRI
146c320b976SJoerg Roedel	bool "PCI PRI support"
147c54420d3SJoerg Roedel	depends on PCI
148c320b976SJoerg Roedel	select PCI_ATS
149c320b976SJoerg Roedel	help
150c320b976SJoerg Roedel	  PRI is the PCI Page Request Interface. It allows PCI devices that are
151c320b976SJoerg Roedel	  behind an IOMMU to recover from page faults.
152c320b976SJoerg Roedel
153c320b976SJoerg Roedel	  If unsure, say N.
154c320b976SJoerg Roedel
155086ac11fSJoerg Roedelconfig PCI_PASID
156086ac11fSJoerg Roedel	bool "PCI PASID support"
157086ac11fSJoerg Roedel	depends on PCI
158086ac11fSJoerg Roedel	select PCI_ATS
159086ac11fSJoerg Roedel	help
160086ac11fSJoerg Roedel	  Process Address Space Identifiers (PASIDs) can be used by PCI devices
161086ac11fSJoerg Roedel	  to access more than one IO address space at the same time. To make
162086ac11fSJoerg Roedel	  use of this feature an IOMMU is required which also supports PASIDs.
163086ac11fSJoerg Roedel	  Select this option if you have such an IOMMU and want to compile the
164086ac11fSJoerg Roedel	  driver for it into your kernel.
165086ac11fSJoerg Roedel
166086ac11fSJoerg Roedel	  If unsure, say N.
167086ac11fSJoerg Roedel
16852916982SLogan Gunthorpeconfig PCI_P2PDMA
16952916982SLogan Gunthorpe	bool "PCI peer-to-peer transfer support"
17052916982SLogan Gunthorpe	depends on PCI && ZONE_DEVICE
17152916982SLogan Gunthorpe	select GENERIC_ALLOCATOR
17252916982SLogan Gunthorpe	help
17352916982SLogan Gunthorpe	  Enableѕ drivers to do PCI peer-to-peer transactions to and from
17452916982SLogan Gunthorpe	  BARs that are exposed in other devices that are the part of
17552916982SLogan Gunthorpe	  the hierarchy where peer-to-peer DMA is guaranteed by the PCI
17652916982SLogan Gunthorpe	  specification to work (ie. anything below a single PCI bridge).
17752916982SLogan Gunthorpe
17852916982SLogan Gunthorpe	  Many PCIe root complexes do not support P2P transactions and
17952916982SLogan Gunthorpe	  it's hard to tell which support it at all, so at this time,
18052916982SLogan Gunthorpe	  P2P DMA transations must be between devices behind the same root
18152916982SLogan Gunthorpe	  port.
18252916982SLogan Gunthorpe
18352916982SLogan Gunthorpe	  If unsure, say N.
18452916982SLogan Gunthorpe
1858a226e00SRandy Dunlapconfig PCI_LABEL
1868a226e00SRandy Dunlap	def_bool y if (DMI || ACPI)
1879de0eec2SCyrille Pitchen	depends on PCI
1888a226e00SRandy Dunlap	select NLS
18945361a4fSThomas Petazzoni
1904daace0dSJake Oshinsconfig PCI_HYPERV
1914daace0dSJake Oshins        tristate "Hyper-V PCI Frontend"
1924daace0dSJake Oshins        depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
1934daace0dSJake Oshins        help
1944daace0dSJake Oshins          The PCI device frontend driver allows the kernel to import arbitrary
1954daace0dSJake Oshins          PCI devices from a PCI backend to support PCI driver domains.
1964daace0dSJake Oshins
19730b5b880STero Roponensource "drivers/pci/hotplug/Kconfig"
1986e0832faSShawn Linsource "drivers/pci/controller/Kconfig"
1995e8cb403SKishon Vijay Abraham Isource "drivers/pci/endpoint/Kconfig"
200080b47deSLogan Gunthorpesource "drivers/pci/switch/Kconfig"
201