mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
![Arnd Bergmann](/assets/img/avatar_default.png)
The PCI_MSI symbol is used inconsistently throughout the tree, with some drivers using 'select' and others using 'depends on', or using conditional selects. This keeps causing problems; the latest one is a result of ARCH_ALPINE using a 'select' statement to enable its platform-specific MSI driver without enabling MSI: warning: (ARCH_ALPINE) selects ALPINE_MSI which has unmet direct dependencies (PCI && PCI_MSI) drivers/irqchip/irq-alpine-msi.c:104:15: error: variable 'alpine_msix_domain_info' has initializer but incomplete type static struct msi_domain_info alpine_msix_domain_info = { ^~~~~~~~~~~~~~~ drivers/irqchip/irq-alpine-msi.c:105:2: error: unknown field 'flags' specified in initializer .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | ^ drivers/irqchip/irq-alpine-msi.c:105:11: error: 'MSI_FLAG_USE_DEF_DOM_OPS' undeclared here (not in a function) .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | ^~~~~~~~~~~~~~~~~~~~~~~~ There is little reason to enable PCI support for a platform that uses MSI but then leave MSI disabled at compile time. Select PCI_MSI from irqchips that implement MSI, and make PCI host bridges that use MSI on ARM depend on PCI_MSI_IRQ_DOMAIN. For all three architectures that support PCI_MSI_IRQ_DOMAIN (ARM, ARM64, X86), enable it by default whenever MSI is enabled. [bhelgaas: changelog, omit crypto config change] Suggested-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
135 lines
3.7 KiB
Text
135 lines
3.7 KiB
Text
#
|
|
# PCI configuration
|
|
#
|
|
|
|
source "drivers/pci/pcie/Kconfig"
|
|
|
|
config PCI_BUS_ADDR_T_64BIT
|
|
def_bool y if (ARCH_DMA_ADDR_T_64BIT || 64BIT)
|
|
depends on PCI
|
|
|
|
config PCI_MSI
|
|
bool "Message Signaled Interrupts (MSI and MSI-X)"
|
|
depends on PCI
|
|
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 ARM || ARM64 || X86
|
|
depends on PCI_MSI
|
|
select GENERIC_MSI_IRQ_DOMAIN
|
|
|
|
config PCI_DEBUG
|
|
bool "PCI Debugging"
|
|
depends on PCI && 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
|
|
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. Note this feature is a no-op
|
|
unless PCI_IOV support is also enabled; in that case 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"
|
|
depends on PCI
|
|
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 XEN_PCIDEV_FRONTEND
|
|
tristate "Xen PCI Frontend"
|
|
depends on PCI && 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 HT_IRQ
|
|
bool "Interrupts on hypertransport devices"
|
|
default y
|
|
depends on PCI && X86_LOCAL_APIC
|
|
help
|
|
This allows native hypertransport devices to use interrupts.
|
|
|
|
If unsure say Y.
|
|
|
|
config PCI_ATS
|
|
bool
|
|
|
|
config PCI_ECAM
|
|
bool
|
|
|
|
config PCI_IOV
|
|
bool "PCI IOV support"
|
|
depends on PCI
|
|
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"
|
|
depends on PCI
|
|
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"
|
|
depends on PCI
|
|
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_LABEL
|
|
def_bool y if (DMI || ACPI)
|
|
select NLS
|
|
|
|
config PCI_HYPERV
|
|
tristate "Hyper-V PCI Frontend"
|
|
depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
|
|
help
|
|
The PCI device frontend driver allows the kernel to import arbitrary
|
|
PCI devices from a PCI backend to support PCI driver domains.
|
|
|
|
source "drivers/pci/hotplug/Kconfig"
|
|
source "drivers/pci/host/Kconfig"
|