forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.1 KiB
260 lines
7.1 KiB
# 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 X86 && XEN |
|
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_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 |
|
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_64 && 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 |
|
|
|
source "drivers/pci/hotplug/Kconfig" |
|
source "drivers/pci/controller/Kconfig" |
|
source "drivers/pci/endpoint/Kconfig" |
|
source "drivers/pci/switch/Kconfig" |
|
|
|
endif
|
|
|