123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- # 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
- menuconfig PCI
- bool "PCI support"
- depends on HAVE_PCI
- 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
- depends on PCI
- 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_IRQ_DOMAIN
- def_bool y
- depends on PCI_MSI
- select GENERIC_MSI_IRQ_DOMAIN
- 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_DOE
- bool
- 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_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 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
- help
- Enableѕ 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 && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
- select PCI_HYPERV_INTERFACE
- help
- The PCI device frontend driver allows the kernel to import arbitrary
- PCI devices from a PCI backend to support PCI driver domains.
- choice
- prompt "PCI Express hierarchy optimization setting"
- default PCIE_BUS_DEFAULT
- depends on PCI && EXPERT
- help
- MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
- device parameters that affect performance and the ability to
- support hotplug and peer-to-peer DMA.
- The following choices set the MPS and MRRS optimization strategy
- at compile-time. The choices are the same as those offered for
- the kernel command-line parameter 'pci', i.e.,
- 'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
- 'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
- This is a compile-time setting and can be overridden by the above
- command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.
- config PCIE_BUS_TUNE_OFF
- bool "Tune Off"
- depends on PCI
- help
- Use the BIOS defaults; don't touch MPS at all. This is the same
- as booting with 'pci=pcie_bus_tune_off'.
- config PCIE_BUS_DEFAULT
- bool "Default"
- depends on PCI
- help
- Default choice; ensure that the MPS matches upstream bridge.
- config PCIE_BUS_SAFE
- bool "Safe"
- depends on PCI
- help
- Use largest MPS that boot-time devices support. If you have a
- closed system with no possibility of adding new devices, this
- will use the largest MPS that's supported by all devices. This
- is the same as booting with 'pci=pcie_bus_safe'.
- config PCIE_BUS_PERFORMANCE
- bool "Performance"
- depends on PCI
- help
- Use MPS and MRRS for best performance. Ensure that a given
- device's MPS is no larger than its parent MPS, which allows us to
- keep all switches/bridges to the max MPS supported by their
- parent. This is the same as booting with 'pci=pcie_bus_perf'.
- config PCIE_BUS_PEER2PEER
- bool "Peer2peer"
- depends on PCI
- help
- Set MPS = 128 for all devices. MPS configuration effected by the
- other options could cause the MPS on one root port to be
- different than that of the MPS on another, which may cause
- hot-added devices or peer-to-peer DMA to fail. Set MPS to the
- smallest possible value (128B) system-wide to avoid these issues.
- This is the same as booting with 'pci=pcie_bus_peer2peer'.
- endchoice
- config VGA_ARB
- bool "VGA Arbitration" if EXPERT
- default y
- depends on (PCI && !S390)
- 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"
- config SEC_PCIE
- depends on PCI_MSM
- bool "SEC_PCIE feature"
- config SEC_PCIE_DEV
- depends on PCI_MSM
- bool "SEC_PCIE_DEV dev feature"
- config SEC_PCIE_AER
- depends on PCI_MSM
- bool "SEC_PCIE_AER feature"
- config SEC_PCIE_L1SS
- depends on PCI_MSM
- depends on SEC_PCIE
- bool "SEC_PCIE_L1SS feature"
- config SEC_PANIC_PCIE_ERR
- depends on PCI_MSM
- depends on SEC_PCIE
- bool "SEC_PANIC_PCIE_ERR feature"
- config SEC_PCIE_KEEP_LINKBW
- depends on PCI_MSM
- depends on SEC_PCIE
- bool "SEC_PCIE_KEEP_LINKBW feature"
- endif
|