| # SPDX-License-Identifier: GPL-2.0 | |
| # | |
| # PCI configuration | |
| # | |
| # select this to offer the PCI prompt | |
| config HAVE_PCI | |
| bool | |
| # select this to unconditionally force on PCI support | |
| config FORCE_PCI | |
| bool | |
| select HAVE_PCI | |
| select PCI | |
| # select this to provide a generic PCI iomap, | |
| # without PCI itself having to be defined | |
| config GENERIC_PCI_IOMAP | |
| bool | |
| menuconfig PCI | |
| bool "PCI support" | |
| depends on HAVE_PCI | |
| depends on MMU | |
| help | |
| This option enables support for the PCI local bus, including | |
| support for PCI-X and the foundations for PCI Express support. | |
| Say 'Y' here unless you know what you are doing. | |
| if PCI | |
| config PCI_DOMAINS | |
| bool | |
| config PCI_DOMAINS_GENERIC | |
| bool | |
| select PCI_DOMAINS | |
| config PCI_SYSCALL | |
| bool | |
| source "drivers/pci/pcie/Kconfig" | |
| config PCI_MSI | |
| bool "Message Signaled Interrupts (MSI and MSI-X)" | |
| select GENERIC_MSI_IRQ | |
| help | |
| This allows device drivers to enable MSI (Message Signaled | |
| Interrupts). Message Signaled Interrupts enable a device to | |
| generate an interrupt using an inbound Memory Write on its | |
| PCI bus instead of asserting a device IRQ pin. | |
| Use of PCI MSI interrupts can be disabled at kernel boot time | |
| by using the 'pci=nomsi' option. This disables MSI for the | |
| entire system. | |
| If you don't know what to do here, say Y. | |
| config PCI_MSI_ARCH_FALLBACKS | |
| bool | |
| config PCI_QUIRKS | |
| default y | |
| bool "Enable PCI quirk workarounds" if EXPERT | |
| help | |
| This enables workarounds for various PCI chipset bugs/quirks. | |
| Disable this only if your target machine is unaffected by PCI | |
| quirks. | |
| config PCI_DEBUG | |
| bool "PCI Debugging" | |
| depends on DEBUG_KERNEL | |
| help | |
| Say Y here if you want the PCI core to produce a bunch of debug | |
| messages to the system log. Select this if you are having a | |
| problem with PCI support and want to see more of what is going on. | |
| When in doubt, say N. | |
| config PCI_REALLOC_ENABLE_AUTO | |
| bool "Enable PCI resource re-allocation detection" | |
| depends on PCI_IOV | |
| help | |
| Say Y here if you want the PCI core to detect if PCI resource | |
| re-allocation needs to be enabled. You can always use pci=realloc=on | |
| or pci=realloc=off to override it. It will automatically | |
| re-allocate PCI resources if SR-IOV BARs have not been allocated by | |
| the BIOS. | |
| When in doubt, say N. | |
| config PCI_STUB | |
| tristate "PCI Stub driver" | |
| help | |
| Say Y or M here if you want be able to reserve a PCI device | |
| when it is going to be assigned to a guest operating system. | |
| When in doubt, say N. | |
| config PCI_PF_STUB | |
| tristate "PCI PF Stub driver" | |
| depends on PCI_IOV | |
| help | |
| Say Y or M here if you want to enable support for devices that | |
| require SR-IOV support, while at the same time the PF (Physical | |
| Function) itself is not providing any actual services on the | |
| host itself such as storage or networking. | |
| When in doubt, say N. | |
| config XEN_PCIDEV_FRONTEND | |
| tristate "Xen PCI Frontend" | |
| depends on XEN_PV | |
| select PCI_XEN | |
| select XEN_XENBUS_FRONTEND | |
| default y | |
| help | |
| The PCI device frontend driver allows the kernel to import arbitrary | |
| PCI devices from a PCI backend to support PCI driver domains. | |
| config PCI_ATS | |
| bool | |
| config PCI_IDE | |
| bool | |
| config PCI_TSM | |
| bool "PCI TSM: Device security protocol support" | |
| select PCI_IDE | |
| select PCI_DOE | |
| select TSM | |
| help | |
| The TEE (Trusted Execution Environment) Device Interface | |
| Security Protocol (TDISP) defines a "TSM" as a platform agent | |
| that manages device authentication, link encryption, link | |
| integrity protection, and assignment of PCI device functions | |
| (virtual or physical) to confidential computing VMs that can | |
| access (DMA) guest private memory. | |
| Enable a platform TSM driver to use this capability. | |
| config PCI_DOE | |
| bool "Enable PCI Data Object Exchange (DOE) support" | |
| help | |
| Say Y here if you want be able to communicate with PCIe DOE | |
| mailboxes. | |
| config PCI_ECAM | |
| bool | |
| config PCI_LOCKLESS_CONFIG | |
| bool | |
| config PCI_BRIDGE_EMUL | |
| bool | |
| config PCI_IOV | |
| bool "PCI IOV support" | |
| select PCI_ATS | |
| help | |
| I/O Virtualization is a PCI feature supported by some devices | |
| which allows them to create virtual devices which share their | |
| physical resources. | |
| If unsure, say N. | |
| config PCI_NPEM | |
| bool "Native PCIe Enclosure Management" | |
| depends on LEDS_CLASS=y | |
| help | |
| Support for Native PCIe Enclosure Management. It allows managing LED | |
| indications in storage enclosures. Enclosure must support following | |
| indications: OK, Locate, Fail, Rebuild, other indications are | |
| optional. | |
| config PCI_PRI | |
| bool "PCI PRI support" | |
| select PCI_ATS | |
| help | |
| PRI is the PCI Page Request Interface. It allows PCI devices that are | |
| behind an IOMMU to recover from page faults. | |
| If unsure, say N. | |
| config PCI_PASID | |
| bool "PCI PASID support" | |
| select PCI_ATS | |
| help | |
| Process Address Space Identifiers (PASIDs) can be used by PCI devices | |
| to access more than one IO address space at the same time. To make | |
| use of this feature an IOMMU is required which also supports PASIDs. | |
| Select this option if you have such an IOMMU and want to compile the | |
| driver for it into your kernel. | |
| If unsure, say N. | |
| config PCIE_TPH | |
| bool "TLP Processing Hints" | |
| help | |
| This option adds support for PCIe TLP Processing Hints (TPH). | |
| TPH allows endpoint devices to provide optimization hints, such as | |
| desired caching behavior, for requests that target memory space. | |
| These hints, called Steering Tags, can empower the system hardware | |
| to optimize the utilization of platform resources. | |
| config PCI_P2PDMA | |
| bool "PCI peer-to-peer transfer support" | |
| depends on ZONE_DEVICE | |
| # | |
| # The need for the scatterlist DMA bus address flag means PCI P2PDMA | |
| # requires 64bit | |
| # | |
| depends on 64BIT | |
| select GENERIC_ALLOCATOR | |
| select NEED_SG_DMA_FLAGS | |
| help | |
| Enables drivers to do PCI peer-to-peer transactions to and from | |
| BARs that are exposed in other devices that are the part of | |
| the hierarchy where peer-to-peer DMA is guaranteed by the PCI | |
| specification to work (ie. anything below a single PCI bridge). | |
| Many PCIe root complexes do not support P2P transactions and | |
| it's hard to tell which support it at all, so at this time, | |
| P2P DMA transactions must be between devices behind the same root | |
| port. | |
| If unsure, say N. | |
| config PCI_LABEL | |
| def_bool y if (DMI || ACPI) | |
| select NLS | |
| config PCI_HYPERV | |
| tristate "Hyper-V PCI Frontend" | |
| depends on ((X86 && X86_64) || ARM64) && HYPERV_VMBUS && PCI_MSI && SYSFS | |
| select PCI_HYPERV_INTERFACE | |
| select IRQ_MSI_LIB | |
| help | |
| The PCI device frontend driver allows the kernel to import arbitrary | |
| PCI devices from a PCI backend to support PCI driver domains. | |
| config PCI_DYNAMIC_OF_NODES | |
| bool "Create Device tree nodes for PCI devices" | |
| depends on OF_IRQ | |
| select OF_DYNAMIC | |
| help | |
| This option enables support for generating device tree nodes for some | |
| PCI devices. Thus, the driver of this kind can load and overlay | |
| flattened device tree for its downstream devices. | |
| Once this option is selected, the device tree nodes will be generated | |
| for all PCI bridges. | |
| config VGA_ARB | |
| bool "VGA Arbitration" if EXPERT | |
| default y | |
| depends on !S390 | |
| select SCREEN_INFO if X86 | |
| help | |
| Some "legacy" VGA devices implemented on PCI typically have the same | |
| hard-decoded addresses as they did on ISA. When multiple PCI devices | |
| are accessed at same time they need some kind of coordination. Please | |
| see Documentation/gpu/vgaarbiter.rst for more details. Select this to | |
| enable VGA arbiter. | |
| config VGA_ARB_MAX_GPUS | |
| int "Maximum number of GPUs" | |
| default 16 | |
| depends on VGA_ARB | |
| help | |
| Reserves space in the kernel to maintain resource locking for | |
| multiple GPUS. The overhead for each GPU is very small. | |
| source "drivers/pci/hotplug/Kconfig" | |
| source "drivers/pci/controller/Kconfig" | |
| source "drivers/pci/endpoint/Kconfig" | |
| source "drivers/pci/switch/Kconfig" | |
| source "drivers/pci/pwrctrl/Kconfig" | |
| endif # PCI |