Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # PCI configuration
0004 #
0005 
0006 # select this to offer the PCI prompt
0007 config HAVE_PCI
0008         bool
0009 
0010 # select this to unconditionally force on PCI support
0011 config FORCE_PCI
0012         bool
0013         select HAVE_PCI
0014         select PCI
0015 
0016 menuconfig PCI
0017         bool "PCI support"
0018         depends on HAVE_PCI
0019         help
0020           This option enables support for the PCI local bus, including
0021           support for PCI-X and the foundations for PCI Express support.
0022           Say 'Y' here unless you know what you are doing.
0023 
0024 if PCI
0025 
0026 config PCI_DOMAINS
0027         bool
0028         depends on PCI
0029 
0030 config PCI_DOMAINS_GENERIC
0031         bool
0032         select PCI_DOMAINS
0033 
0034 config PCI_SYSCALL
0035         bool
0036 
0037 source "drivers/pci/pcie/Kconfig"
0038 
0039 config PCI_MSI
0040         bool "Message Signaled Interrupts (MSI and MSI-X)"
0041         select GENERIC_MSI_IRQ
0042         help
0043            This allows device drivers to enable MSI (Message Signaled
0044            Interrupts).  Message Signaled Interrupts enable a device to
0045            generate an interrupt using an inbound Memory Write on its
0046            PCI bus instead of asserting a device IRQ pin.
0047 
0048            Use of PCI MSI interrupts can be disabled at kernel boot time
0049            by using the 'pci=nomsi' option.  This disables MSI for the
0050            entire system.
0051 
0052            If you don't know what to do here, say Y.
0053 
0054 config PCI_MSI_IRQ_DOMAIN
0055         def_bool y
0056         depends on PCI_MSI
0057         select GENERIC_MSI_IRQ_DOMAIN
0058 
0059 config PCI_MSI_ARCH_FALLBACKS
0060         bool
0061 
0062 config PCI_QUIRKS
0063         default y
0064         bool "Enable PCI quirk workarounds" if EXPERT
0065         help
0066           This enables workarounds for various PCI chipset bugs/quirks.
0067           Disable this only if your target machine is unaffected by PCI
0068           quirks.
0069 
0070 config PCI_DEBUG
0071         bool "PCI Debugging"
0072         depends on DEBUG_KERNEL
0073         help
0074           Say Y here if you want the PCI core to produce a bunch of debug
0075           messages to the system log.  Select this if you are having a
0076           problem with PCI support and want to see more of what is going on.
0077 
0078           When in doubt, say N.
0079 
0080 config PCI_REALLOC_ENABLE_AUTO
0081         bool "Enable PCI resource re-allocation detection"
0082         depends on PCI_IOV
0083         help
0084           Say Y here if you want the PCI core to detect if PCI resource
0085           re-allocation needs to be enabled. You can always use pci=realloc=on
0086           or pci=realloc=off to override it.  It will automatically
0087           re-allocate PCI resources if SR-IOV BARs have not been allocated by
0088           the BIOS.
0089 
0090           When in doubt, say N.
0091 
0092 config PCI_STUB
0093         tristate "PCI Stub driver"
0094         help
0095           Say Y or M here if you want be able to reserve a PCI device
0096           when it is going to be assigned to a guest operating system.
0097 
0098           When in doubt, say N.
0099 
0100 config PCI_PF_STUB
0101         tristate "PCI PF Stub driver"
0102         depends on PCI_IOV
0103         help
0104           Say Y or M here if you want to enable support for devices that
0105           require SR-IOV support, while at the same time the PF (Physical
0106           Function) itself is not providing any actual services on the
0107           host itself such as storage or networking.
0108 
0109           When in doubt, say N.
0110 
0111 config XEN_PCIDEV_FRONTEND
0112         tristate "Xen PCI Frontend"
0113         depends on XEN_PV
0114         select PCI_XEN
0115         select XEN_XENBUS_FRONTEND
0116         default y
0117         help
0118           The PCI device frontend driver allows the kernel to import arbitrary
0119           PCI devices from a PCI backend to support PCI driver domains.
0120 
0121 config PCI_ATS
0122         bool
0123 
0124 config PCI_DOE
0125         bool
0126 
0127 config PCI_ECAM
0128         bool
0129 
0130 config PCI_LOCKLESS_CONFIG
0131         bool
0132 
0133 config PCI_BRIDGE_EMUL
0134         bool
0135 
0136 config PCI_IOV
0137         bool "PCI IOV support"
0138         select PCI_ATS
0139         help
0140           I/O Virtualization is a PCI feature supported by some devices
0141           which allows them to create virtual devices which share their
0142           physical resources.
0143 
0144           If unsure, say N.
0145 
0146 config PCI_PRI
0147         bool "PCI PRI support"
0148         select PCI_ATS
0149         help
0150           PRI is the PCI Page Request Interface. It allows PCI devices that are
0151           behind an IOMMU to recover from page faults.
0152 
0153           If unsure, say N.
0154 
0155 config PCI_PASID
0156         bool "PCI PASID support"
0157         select PCI_ATS
0158         help
0159           Process Address Space Identifiers (PASIDs) can be used by PCI devices
0160           to access more than one IO address space at the same time. To make
0161           use of this feature an IOMMU is required which also supports PASIDs.
0162           Select this option if you have such an IOMMU and want to compile the
0163           driver for it into your kernel.
0164 
0165           If unsure, say N.
0166 
0167 config PCI_P2PDMA
0168         bool "PCI peer-to-peer transfer support"
0169         depends on ZONE_DEVICE
0170         #
0171         # The need for the scatterlist DMA bus address flag means PCI P2PDMA
0172         # requires 64bit
0173         #
0174         depends on 64BIT
0175         select GENERIC_ALLOCATOR
0176         help
0177           Enableѕ drivers to do PCI peer-to-peer transactions to and from
0178           BARs that are exposed in other devices that are the part of
0179           the hierarchy where peer-to-peer DMA is guaranteed by the PCI
0180           specification to work (ie. anything below a single PCI bridge).
0181 
0182           Many PCIe root complexes do not support P2P transactions and
0183           it's hard to tell which support it at all, so at this time,
0184           P2P DMA transactions must be between devices behind the same root
0185           port.
0186 
0187           If unsure, say N.
0188 
0189 config PCI_LABEL
0190         def_bool y if (DMI || ACPI)
0191         select NLS
0192 
0193 config PCI_HYPERV
0194         tristate "Hyper-V PCI Frontend"
0195         depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
0196         select PCI_HYPERV_INTERFACE
0197         help
0198           The PCI device frontend driver allows the kernel to import arbitrary
0199           PCI devices from a PCI backend to support PCI driver domains.
0200 
0201 choice
0202         prompt "PCI Express hierarchy optimization setting"
0203         default PCIE_BUS_DEFAULT
0204         depends on PCI && EXPERT
0205         help
0206           MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
0207           device parameters that affect performance and the ability to
0208           support hotplug and peer-to-peer DMA.
0209 
0210           The following choices set the MPS and MRRS optimization strategy
0211           at compile-time.  The choices are the same as those offered for
0212           the kernel command-line parameter 'pci', i.e.,
0213           'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
0214           'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
0215 
0216           This is a compile-time setting and can be overridden by the above
0217           command-line parameters.  If unsure, choose PCIE_BUS_DEFAULT.
0218 
0219 config PCIE_BUS_TUNE_OFF
0220         bool "Tune Off"
0221         depends on PCI
0222         help
0223           Use the BIOS defaults; don't touch MPS at all.  This is the same
0224           as booting with 'pci=pcie_bus_tune_off'.
0225 
0226 config PCIE_BUS_DEFAULT
0227         bool "Default"
0228         depends on PCI
0229         help
0230           Default choice; ensure that the MPS matches upstream bridge.
0231 
0232 config PCIE_BUS_SAFE
0233         bool "Safe"
0234         depends on PCI
0235         help
0236           Use largest MPS that boot-time devices support.  If you have a
0237           closed system with no possibility of adding new devices, this
0238           will use the largest MPS that's supported by all devices.  This
0239           is the same as booting with 'pci=pcie_bus_safe'.
0240 
0241 config PCIE_BUS_PERFORMANCE
0242         bool "Performance"
0243         depends on PCI
0244         help
0245           Use MPS and MRRS for best performance.  Ensure that a given
0246           device's MPS is no larger than its parent MPS, which allows us to
0247           keep all switches/bridges to the max MPS supported by their
0248           parent.  This is the same as booting with 'pci=pcie_bus_perf'.
0249 
0250 config PCIE_BUS_PEER2PEER
0251         bool "Peer2peer"
0252         depends on PCI
0253         help
0254           Set MPS = 128 for all devices.  MPS configuration effected by the
0255           other options could cause the MPS on one root port to be
0256           different than that of the MPS on another, which may cause
0257           hot-added devices or peer-to-peer DMA to fail.  Set MPS to the
0258           smallest possible value (128B) system-wide to avoid these issues.
0259           This is the same as booting with 'pci=pcie_bus_peer2peer'.
0260 
0261 endchoice
0262 
0263 config VGA_ARB
0264         bool "VGA Arbitration" if EXPERT
0265         default y
0266         depends on (PCI && !S390)
0267         help
0268           Some "legacy" VGA devices implemented on PCI typically have the same
0269           hard-decoded addresses as they did on ISA. When multiple PCI devices
0270           are accessed at same time they need some kind of coordination. Please
0271           see Documentation/gpu/vgaarbiter.rst for more details. Select this to
0272           enable VGA arbiter.
0273 
0274 config VGA_ARB_MAX_GPUS
0275         int "Maximum number of GPUs"
0276         default 16
0277         depends on VGA_ARB
0278         help
0279           Reserves space in the kernel to maintain resource locking for
0280           multiple GPUS.  The overhead for each GPU is very small.
0281 
0282 source "drivers/pci/hotplug/Kconfig"
0283 source "drivers/pci/controller/Kconfig"
0284 source "drivers/pci/endpoint/Kconfig"
0285 source "drivers/pci/switch/Kconfig"
0286 
0287 endif