PCI/MSI: irqchip: Fix PCI_MSI dependencies
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>
This commit is contained in:
parent
af8c34ce6a
commit
3ee803641e
@ -715,7 +715,7 @@ config ARCH_VIRT
|
|||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
select ARM_AMBA
|
select ARM_AMBA
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select ARM_GIC_V2M if PCI_MSI
|
select ARM_GIC_V2M if PCI
|
||||||
select ARM_GIC_V3
|
select ARM_GIC_V3
|
||||||
select ARM_PSCI
|
select ARM_PSCI
|
||||||
select HAVE_ARM_ARCH_TIMER
|
select HAVE_ARM_ARCH_TIMER
|
||||||
|
@ -20,9 +20,9 @@ config ARM64
|
|||||||
select ARM_ARCH_TIMER
|
select ARM_ARCH_TIMER
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select AUDIT_ARCH_COMPAT_GENERIC
|
select AUDIT_ARCH_COMPAT_GENERIC
|
||||||
select ARM_GIC_V2M if PCI_MSI
|
select ARM_GIC_V2M if PCI
|
||||||
select ARM_GIC_V3
|
select ARM_GIC_V3
|
||||||
select ARM_GIC_V3_ITS if PCI_MSI
|
select ARM_GIC_V3_ITS if PCI
|
||||||
select ARM_PSCI_FW
|
select ARM_PSCI_FW
|
||||||
select BUILDTIME_EXTABLE_SORT
|
select BUILDTIME_EXTABLE_SORT
|
||||||
select CLONE_BACKWARDS
|
select CLONE_BACKWARDS
|
||||||
|
@ -15,9 +15,9 @@ config ARM_GIC_MAX_NR
|
|||||||
|
|
||||||
config ARM_GIC_V2M
|
config ARM_GIC_V2M
|
||||||
bool
|
bool
|
||||||
depends on ARM_GIC
|
depends on PCI
|
||||||
depends on PCI && PCI_MSI
|
select ARM_GIC
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
select PCI_MSI
|
||||||
|
|
||||||
config GIC_NON_BANKED
|
config GIC_NON_BANKED
|
||||||
bool
|
bool
|
||||||
@ -31,7 +31,8 @@ config ARM_GIC_V3
|
|||||||
|
|
||||||
config ARM_GIC_V3_ITS
|
config ARM_GIC_V3_ITS
|
||||||
bool
|
bool
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
depends on PCI
|
||||||
|
depends on PCI_MSI
|
||||||
|
|
||||||
config ARM_NVIC
|
config ARM_NVIC
|
||||||
bool
|
bool
|
||||||
@ -56,13 +57,13 @@ config ARM_VIC_NR
|
|||||||
config ARMADA_370_XP_IRQ
|
config ARMADA_370_XP_IRQ
|
||||||
bool
|
bool
|
||||||
select GENERIC_IRQ_CHIP
|
select GENERIC_IRQ_CHIP
|
||||||
select PCI_MSI_IRQ_DOMAIN if PCI_MSI
|
select PCI_MSI if PCI
|
||||||
|
|
||||||
config ALPINE_MSI
|
config ALPINE_MSI
|
||||||
bool
|
bool
|
||||||
depends on PCI && PCI_MSI
|
depends on PCI
|
||||||
|
select PCI_MSI
|
||||||
select GENERIC_IRQ_CHIP
|
select GENERIC_IRQ_CHIP
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
|
||||||
|
|
||||||
config ATMEL_AIC_IRQ
|
config ATMEL_AIC_IRQ
|
||||||
bool
|
bool
|
||||||
@ -111,7 +112,6 @@ config HISILICON_IRQ_MBIGEN
|
|||||||
bool
|
bool
|
||||||
select ARM_GIC_V3
|
select ARM_GIC_V3
|
||||||
select ARM_GIC_V3_ITS
|
select ARM_GIC_V3_ITS
|
||||||
select GENERIC_MSI_IRQ_DOMAIN
|
|
||||||
|
|
||||||
config IMGPDC_IRQ
|
config IMGPDC_IRQ
|
||||||
bool
|
bool
|
||||||
@ -244,12 +244,10 @@ config IRQ_MXS
|
|||||||
|
|
||||||
config MVEBU_ODMI
|
config MVEBU_ODMI
|
||||||
bool
|
bool
|
||||||
select GENERIC_MSI_IRQ_DOMAIN
|
|
||||||
|
|
||||||
config LS_SCFG_MSI
|
config LS_SCFG_MSI
|
||||||
def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
|
def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
|
||||||
depends on PCI && PCI_MSI
|
depends on PCI && PCI_MSI
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
|
||||||
|
|
||||||
config PARTITION_PERCPU
|
config PARTITION_PERCPU
|
||||||
bool
|
bool
|
||||||
|
@ -25,7 +25,7 @@ config PCI_MSI
|
|||||||
If you don't know what to do here, say Y.
|
If you don't know what to do here, say Y.
|
||||||
|
|
||||||
config PCI_MSI_IRQ_DOMAIN
|
config PCI_MSI_IRQ_DOMAIN
|
||||||
bool
|
def_bool ARM || ARM64 || X86
|
||||||
depends on PCI_MSI
|
depends on PCI_MSI
|
||||||
select GENERIC_MSI_IRQ_DOMAIN
|
select GENERIC_MSI_IRQ_DOMAIN
|
||||||
|
|
||||||
|
@ -3,8 +3,9 @@ menu "PCI host controller drivers"
|
|||||||
|
|
||||||
config PCI_DRA7XX
|
config PCI_DRA7XX
|
||||||
bool "TI DRA7xx PCIe controller"
|
bool "TI DRA7xx PCIe controller"
|
||||||
select PCIE_DW
|
|
||||||
depends on OF && HAS_IOMEM && TI_PIPE3
|
depends on OF && HAS_IOMEM && TI_PIPE3
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
|
select PCIE_DW
|
||||||
help
|
help
|
||||||
Enables support for the PCIe controller in the DRA7xx SoC. There
|
Enables support for the PCIe controller in the DRA7xx SoC. There
|
||||||
are two instances of PCIe controller in DRA7xx. This controller can
|
are two instances of PCIe controller in DRA7xx. This controller can
|
||||||
@ -20,7 +21,7 @@ config PCI_MVEBU
|
|||||||
config PCIE_XILINX_NWL
|
config PCIE_XILINX_NWL
|
||||||
bool "NWL PCIe Core"
|
bool "NWL PCIe Core"
|
||||||
depends on ARCH_ZYNQMP
|
depends on ARCH_ZYNQMP
|
||||||
select PCI_MSI_IRQ_DOMAIN if PCI_MSI
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
help
|
help
|
||||||
Say 'Y' here if you want kernel support for Xilinx
|
Say 'Y' here if you want kernel support for Xilinx
|
||||||
NWL PCIe controller. The controller can act as Root Port
|
NWL PCIe controller. The controller can act as Root Port
|
||||||
@ -29,6 +30,7 @@ config PCIE_XILINX_NWL
|
|||||||
|
|
||||||
config PCIE_DW_PLAT
|
config PCIE_DW_PLAT
|
||||||
bool "Platform bus based DesignWare PCIe Controller"
|
bool "Platform bus based DesignWare PCIe Controller"
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
---help---
|
---help---
|
||||||
This selects the DesignWare PCIe controller support. Select this if
|
This selects the DesignWare PCIe controller support. Select this if
|
||||||
@ -40,16 +42,19 @@ config PCIE_DW_PLAT
|
|||||||
|
|
||||||
config PCIE_DW
|
config PCIE_DW
|
||||||
bool
|
bool
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
|
|
||||||
config PCI_EXYNOS
|
config PCI_EXYNOS
|
||||||
bool "Samsung Exynos PCIe controller"
|
bool "Samsung Exynos PCIe controller"
|
||||||
depends on SOC_EXYNOS5440
|
depends on SOC_EXYNOS5440
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
|
|
||||||
config PCI_IMX6
|
config PCI_IMX6
|
||||||
bool "Freescale i.MX6 PCIe controller"
|
bool "Freescale i.MX6 PCIe controller"
|
||||||
depends on SOC_IMX6Q
|
depends on SOC_IMX6Q
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
|
|
||||||
@ -72,8 +77,7 @@ config PCI_RCAR_GEN2
|
|||||||
config PCIE_RCAR
|
config PCIE_RCAR
|
||||||
bool "Renesas R-Car PCIe controller"
|
bool "Renesas R-Car PCIe controller"
|
||||||
depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
|
depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
|
||||||
select PCI_MSI
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
|
||||||
help
|
help
|
||||||
Say Y here if you want PCIe controller support on R-Car SoCs.
|
Say Y here if you want PCIe controller support on R-Car SoCs.
|
||||||
|
|
||||||
@ -92,6 +96,7 @@ config PCI_HOST_GENERIC
|
|||||||
config PCIE_SPEAR13XX
|
config PCIE_SPEAR13XX
|
||||||
bool "STMicroelectronics SPEAr PCIe controller"
|
bool "STMicroelectronics SPEAr PCIe controller"
|
||||||
depends on ARCH_SPEAR13XX
|
depends on ARCH_SPEAR13XX
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
help
|
help
|
||||||
@ -100,6 +105,7 @@ config PCIE_SPEAR13XX
|
|||||||
config PCI_KEYSTONE
|
config PCI_KEYSTONE
|
||||||
bool "TI Keystone PCIe controller"
|
bool "TI Keystone PCIe controller"
|
||||||
depends on ARCH_KEYSTONE
|
depends on ARCH_KEYSTONE
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
help
|
help
|
||||||
@ -120,7 +126,6 @@ config PCI_XGENE
|
|||||||
depends on ARCH_XGENE
|
depends on ARCH_XGENE
|
||||||
depends on OF
|
depends on OF
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
select PCI_MSI_IRQ_DOMAIN if PCI_MSI
|
|
||||||
help
|
help
|
||||||
Say Y here if you want internal PCI support on APM X-Gene SoC.
|
Say Y here if you want internal PCI support on APM X-Gene SoC.
|
||||||
There are 5 internal PCIe ports available. Each port is GEN3 capable
|
There are 5 internal PCIe ports available. Each port is GEN3 capable
|
||||||
@ -128,7 +133,8 @@ config PCI_XGENE
|
|||||||
|
|
||||||
config PCI_XGENE_MSI
|
config PCI_XGENE_MSI
|
||||||
bool "X-Gene v1 PCIe MSI feature"
|
bool "X-Gene v1 PCIe MSI feature"
|
||||||
depends on PCI_XGENE && PCI_MSI
|
depends on PCI_XGENE
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
|
Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
|
||||||
@ -137,6 +143,7 @@ config PCI_XGENE_MSI
|
|||||||
config PCI_LAYERSCAPE
|
config PCI_LAYERSCAPE
|
||||||
bool "Freescale Layerscape PCIe controller"
|
bool "Freescale Layerscape PCIe controller"
|
||||||
depends on OF && (ARM || ARCH_LAYERSCAPE)
|
depends on OF && (ARM || ARCH_LAYERSCAPE)
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
select MFD_SYSCON
|
select MFD_SYSCON
|
||||||
help
|
help
|
||||||
@ -177,8 +184,7 @@ config PCIE_IPROC_BCMA
|
|||||||
config PCIE_IPROC_MSI
|
config PCIE_IPROC_MSI
|
||||||
bool "Broadcom iProc PCIe MSI support"
|
bool "Broadcom iProc PCIe MSI support"
|
||||||
depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
|
depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
|
||||||
depends on PCI_MSI
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
|
||||||
default ARCH_BCM_IPROC
|
default ARCH_BCM_IPROC
|
||||||
help
|
help
|
||||||
Say Y here if you want to enable MSI support for Broadcom's iProc
|
Say Y here if you want to enable MSI support for Broadcom's iProc
|
||||||
@ -195,8 +201,8 @@ config PCIE_ALTERA
|
|||||||
|
|
||||||
config PCIE_ALTERA_MSI
|
config PCIE_ALTERA_MSI
|
||||||
bool "Altera PCIe MSI feature"
|
bool "Altera PCIe MSI feature"
|
||||||
depends on PCIE_ALTERA && PCI_MSI
|
depends on PCIE_ALTERA
|
||||||
select PCI_MSI_IRQ_DOMAIN
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
help
|
help
|
||||||
Say Y here if you want PCIe MSI support for the Altera FPGA.
|
Say Y here if you want PCIe MSI support for the Altera FPGA.
|
||||||
This MSI driver supports Altera MSI to GIC controller IP.
|
This MSI driver supports Altera MSI to GIC controller IP.
|
||||||
@ -204,6 +210,7 @@ config PCIE_ALTERA_MSI
|
|||||||
config PCI_HISI
|
config PCI_HISI
|
||||||
depends on OF && ARM64
|
depends on OF && ARM64
|
||||||
bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
|
bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
help
|
help
|
||||||
@ -213,6 +220,7 @@ config PCI_HISI
|
|||||||
config PCIE_QCOM
|
config PCIE_QCOM
|
||||||
bool "Qualcomm PCIe controller"
|
bool "Qualcomm PCIe controller"
|
||||||
depends on ARCH_QCOM && OF
|
depends on ARCH_QCOM && OF
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
help
|
help
|
||||||
@ -237,6 +245,7 @@ config PCI_HOST_THUNDER_ECAM
|
|||||||
config PCIE_ARMADA_8K
|
config PCIE_ARMADA_8K
|
||||||
bool "Marvell Armada-8K PCIe controller"
|
bool "Marvell Armada-8K PCIe controller"
|
||||||
depends on ARCH_MVEBU
|
depends on ARCH_MVEBU
|
||||||
|
depends on PCI_MSI_IRQ_DOMAIN
|
||||||
select PCIE_DW
|
select PCIE_DW
|
||||||
select PCIEPORTBUS
|
select PCIEPORTBUS
|
||||||
help
|
help
|
||||||
|
Loading…
Reference in New Issue
Block a user