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