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