diff mbox

[v4] PCI: improve host drivers compile test coverage

Message ID 20180405193154.27897-1-robh@kernel.org (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Rob Herring (Arm) April 5, 2018, 7:31 p.m. UTC
Add COMPILE_TEST on driver config options with it. Some ARM drivers
still have arch dependencies, so we have to keep those dependent on ARM.

Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
v4: Drop iProc hunks

 drivers/pci/dwc/Kconfig  | 24 ++++++++++++------------
 drivers/pci/host/Kconfig | 31 ++++++++++++++-----------------
 2 files changed, 26 insertions(+), 29 deletions(-)

Comments

Bjorn Helgaas May 18, 2018, 9:42 p.m. UTC | #1
Hi Rob,

On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
> Add COMPILE_TEST on driver config options with it. Some ARM drivers
> still have arch dependencies, so we have to keep those dependent on ARM.
> 
> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: linux-pci@vger.kernel.org
> Signed-off-by: Rob Herring <robh@kernel.org>

>  config PCIE_ALTERA
>  	bool "Altera PCIe controller"
> -	depends on ARM || NIOS2
> -	depends on OF_PCI
> +	depends on ARM || NIOS2 || COMPILE_TEST

Did you intend to drop the OF_PCI dependency?

I see that CONFIG_OF_PCI doesn't exist, so that looks bogus.

But drivers/pci/host/pcie-altera.c still uses
devm_of_pci_get_host_bridge_resources(), so I think this should probably
still depend on CONFIG_OF?
Rob Herring (Arm) May 19, 2018, 7:22 p.m. UTC | #2
On Fri, May 18, 2018 at 4:42 PM, Bjorn Helgaas <helgaas@kernel.org> wrote:
> Hi Rob,
>
> On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
>> Add COMPILE_TEST on driver config options with it. Some ARM drivers
>> still have arch dependencies, so we have to keep those dependent on ARM.
>>
>> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>> Cc: linux-pci@vger.kernel.org
>> Signed-off-by: Rob Herring <robh@kernel.org>
>
>>  config PCIE_ALTERA
>>       bool "Altera PCIe controller"
>> -     depends on ARM || NIOS2
>> -     depends on OF_PCI
>> +     depends on ARM || NIOS2 || COMPILE_TEST
>
> Did you intend to drop the OF_PCI dependency?

No, that should have been removed when OF_PCI was in commit
4670d610d592 ("PCI: Move OF-related PCI functions into PCI core").

> I see that CONFIG_OF_PCI doesn't exist, so that looks bogus.
>
> But drivers/pci/host/pcie-altera.c still uses
> devm_of_pci_get_host_bridge_resources(), so I think this should probably
> still depend on CONFIG_OF?

There's an empty version so it shouldn't matter.

Rob
Guenter Roeck June 12, 2018, 5:02 p.m. UTC | #3
On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
> Add COMPILE_TEST on driver config options with it. Some ARM drivers
> still have arch dependencies, so we have to keep those dependent on ARM.
> 
> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: linux-pci@vger.kernel.org
> Signed-off-by: Rob Herring <robh@kernel.org>

This patch has the undesirable side effect that it selects PCI_DOMAINS for
sparc32:allmodconfig, which in turn results in

drivers/ata/pata_ali.c: In function 'ali_init_chipset':
drivers/ata/pata_ali.c:469:38: error:
	implicit declaration of function 'pci_domain_nr'; did you mean 'pci_iomap_wc'?

Unfortunately, 37bd62d224c82 ("PCI: Enable PCI_DOMAINS along with generic
PCI host controller") has pretty much the same result. No idea how to fix
the problem, so I won't even try.

Guenter

> ---
> v4: Drop iProc hunks
> 
>  drivers/pci/dwc/Kconfig  | 24 ++++++++++++------------
>  drivers/pci/host/Kconfig | 31 ++++++++++++++-----------------
>  2 files changed, 26 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
> index 8c1a5167fb5b..2902544f5834 100644
> --- a/drivers/pci/dwc/Kconfig
> +++ b/drivers/pci/dwc/Kconfig
> @@ -64,21 +64,21 @@ config PCIE_DW_PLAT
>  
>  config PCI_EXYNOS
>  	bool "Samsung Exynos PCIe controller"
> -	depends on SOC_EXYNOS5440
> +	depends on SOC_EXYNOS5440 || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
>  
>  config PCI_IMX6
>  	bool "Freescale i.MX6 PCIe controller"
> -	depends on SOC_IMX6Q
> +	depends on SOC_IMX6Q || (ARM && COMPILE_TEST)
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
>  
>  config PCIE_SPEAR13XX
>  	bool "STMicroelectronics SPEAr PCIe controller"
> -	depends on ARCH_SPEAR13XX
> +	depends on ARCH_SPEAR13XX || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> @@ -87,7 +87,7 @@ config PCIE_SPEAR13XX
>  
>  config PCI_KEYSTONE
>  	bool "TI Keystone PCIe controller"
> -	depends on ARCH_KEYSTONE
> +	depends on ARCH_KEYSTONE || (ARM && COMPILE_TEST)
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> @@ -99,7 +99,7 @@ config PCI_KEYSTONE
>  
>  config PCI_LAYERSCAPE
>  	bool "Freescale Layerscape PCIe controller"
> -	depends on OF && (ARM || ARCH_LAYERSCAPE)
> +	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select MFD_SYSCON
>  	select PCIE_DW_HOST
> @@ -107,7 +107,7 @@ config PCI_LAYERSCAPE
>  	  Say Y here if you want PCIe controller support on Layerscape SoCs.
>  
>  config PCI_HISI
> -	depends on OF && ARM64
> +	depends on OF && (ARM64 || COMPILE_TEST)
>  	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
> @@ -119,7 +119,7 @@ config PCI_HISI
>  
>  config PCIE_QCOM
>  	bool "Qualcomm PCIe controller"
> -	depends on ARCH_QCOM && OF
> +	depends on OF && (ARCH_QCOM || COMPILE_TEST)
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> @@ -130,7 +130,7 @@ config PCIE_QCOM
>  
>  config PCIE_ARMADA_8K
>  	bool "Marvell Armada-8K PCIe controller"
> -	depends on ARCH_MVEBU
> +	depends on ARCH_MVEBU || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> @@ -145,7 +145,7 @@ config PCIE_ARTPEC6
>  
>  config PCIE_ARTPEC6_HOST
>  	bool "Axis ARTPEC-6 PCIe controller Host Mode"
> -	depends on MACH_ARTPEC6
> +	depends on MACH_ARTPEC6 || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> @@ -156,7 +156,7 @@ config PCIE_ARTPEC6_HOST
>  
>  config PCIE_ARTPEC6_EP
>  	bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
> -	depends on MACH_ARTPEC6
> +	depends on MACH_ARTPEC6 || COMPILE_TEST
>  	depends on PCI_ENDPOINT
>  	select PCIE_DW_EP
>  	select PCIE_ARTPEC6
> @@ -165,7 +165,7 @@ config PCIE_ARTPEC6_EP
>  	  endpoint mode. This uses the DesignWare core.
>  
>  config PCIE_KIRIN
> -	depends on OF && ARM64
> +	depends on OF && (ARM64 || COMPILE_TEST)
>  	bool "HiSilicon Kirin series SoCs PCIe controllers"
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
> @@ -176,7 +176,7 @@ config PCIE_KIRIN
>  
>  config PCIE_HISI_STB
>  	bool "HiSilicon STB SoCs PCIe controllers"
> -	depends on ARCH_HISI
> +	depends on ARCH_HISI || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	select PCIEPORTBUS
>  	select PCIE_DW_HOST
> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> index 0d0177ce436c..3d180b594ff2 100644
> --- a/drivers/pci/host/Kconfig
> +++ b/drivers/pci/host/Kconfig
> @@ -5,13 +5,13 @@ menu "PCI host controller drivers"
>  
>  config PCI_MVEBU
>  	bool "Marvell EBU PCIe controller"
> -	depends on ARCH_MVEBU || ARCH_DOVE
> +	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
>  	depends on ARM
>  	depends on OF
>  
>  config PCI_AARDVARK
>  	bool "Aardvark PCIe controller"
> -	depends on ARCH_MVEBU && ARM64
> +	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
>  	depends on OF
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	help
> @@ -21,7 +21,7 @@ config PCI_AARDVARK
>  
>  config PCIE_XILINX_NWL
>  	bool "NWL PCIe Core"
> -	depends on ARCH_ZYNQMP
> +	depends on ARCH_ZYNQMP || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	help
>  	 Say 'Y' here if you want kernel support for Xilinx
> @@ -32,12 +32,11 @@ config PCIE_XILINX_NWL
>  config PCI_FTPCI100
>  	bool "Faraday Technology FTPCI100 PCI controller"
>  	depends on OF
> -	depends on ARM
>  	default ARCH_GEMINI
>  
>  config PCI_TEGRA
>  	bool "NVIDIA Tegra PCIe controller"
> -	depends on ARCH_TEGRA
> +	depends on ARCH_TEGRA || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	help
>  	  Say Y here if you want support for the PCIe host controller found
> @@ -45,8 +44,8 @@ config PCI_TEGRA
>  
>  config PCI_RCAR_GEN2
>  	bool "Renesas R-Car Gen2 Internal PCI controller"
> -	depends on ARM
>  	depends on ARCH_RENESAS || COMPILE_TEST
> +	depends on ARM
>  	help
>  	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
>  	  There are 3 internal PCI controllers available with a single
> @@ -54,7 +53,7 @@ config PCI_RCAR_GEN2
>  
>  config PCIE_RCAR
>  	bool "Renesas R-Car PCIe controller"
> -	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
> +	depends on ARCH_RENESAS || COMPILE_TEST
>  	depends on PCI_MSI_IRQ_DOMAIN
>  	help
>  	  Say Y here if you want PCIe controller support on R-Car SoCs.
> @@ -65,7 +64,7 @@ config PCI_HOST_COMMON
>  
>  config PCI_HOST_GENERIC
>  	bool "Generic PCI host controller"
> -	depends on (ARM || ARM64) && OF
> +	depends on OF
>  	select PCI_HOST_COMMON
>  	select IRQ_DOMAIN
>  	help
> @@ -74,14 +73,14 @@ config PCI_HOST_GENERIC
>  
>  config PCIE_XILINX
>  	bool "Xilinx AXI PCIe host bridge support"
> -	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
> +	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC) || COMPILE_TEST
>  	help
>  	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
>  	  Host Bridge driver.
>  
>  config PCI_XGENE
>  	bool "X-Gene PCIe controller"
> -	depends on ARM64
> +	depends on ARM64 || COMPILE_TEST
>  	depends on OF || (ACPI && PCI_QUIRKS)
>  	select PCIEPORTBUS
>  	help
> @@ -101,7 +100,7 @@ config PCI_XGENE_MSI
>  config PCI_V3_SEMI
>  	bool "V3 Semiconductor PCI controller"
>  	depends on OF
> -	depends on ARM
> +	depends on ARM || COMPILE_TEST
>  	default ARCH_INTEGRATOR_AP
>  
>  config PCI_VERSATILE
> @@ -147,8 +146,7 @@ config PCIE_IPROC_MSI
>  
>  config PCIE_ALTERA
>  	bool "Altera PCIe controller"
> -	depends on ARM || NIOS2
> -	depends on OF_PCI
> +	depends on ARM || NIOS2 || COMPILE_TEST
>  	select PCI_DOMAINS
>  	help
>  	  Say Y here if you want to enable PCIe controller support on Altera
> @@ -164,7 +162,7 @@ config PCIE_ALTERA_MSI
>  
>  config PCI_HOST_THUNDER_PEM
>  	bool "Cavium Thunder PCIe controller to off-chip devices"
> -	depends on ARM64
> +	depends on ARM64 || COMPILE_TEST
>  	depends on OF || (ACPI && PCI_QUIRKS)
>  	select PCI_HOST_COMMON
>  	help
> @@ -172,7 +170,7 @@ config PCI_HOST_THUNDER_PEM
>  
>  config PCI_HOST_THUNDER_ECAM
>  	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
> -	depends on ARM64
> +	depends on ARM64 || COMPILE_TEST
>  	depends on OF || (ACPI && PCI_QUIRKS)
>  	select PCI_HOST_COMMON
>  	help
> @@ -191,9 +189,8 @@ config PCIE_ROCKCHIP
>  
>  config PCIE_MEDIATEK
>  	bool "MediaTek PCIe controller"
> -	depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
> +	depends on ARCH_MEDIATEK || COMPILE_TEST
>  	depends on OF
> -	depends on PCI
>  	select PCIEPORTBUS
>  	help
>  	  Say Y here if you want to enable PCIe controller support on
Lorenzo Pieralisi June 13, 2018, 10:09 a.m. UTC | #4
[+Jan, Ley Foon, RMK]

On Tue, Jun 12, 2018 at 10:02:29AM -0700, Guenter Roeck wrote:
> On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
> > Add COMPILE_TEST on driver config options with it. Some ARM drivers
> > still have arch dependencies, so we have to keep those dependent on ARM.
> > 
> > Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: linux-pci@vger.kernel.org
> > Signed-off-by: Rob Herring <robh@kernel.org>
> 
> This patch has the undesirable side effect that it selects PCI_DOMAINS for
> sparc32:allmodconfig, which in turn results in
> 
> drivers/ata/pata_ali.c: In function 'ali_init_chipset':
> drivers/ata/pata_ali.c:469:38: error:
> 	implicit declaration of function 'pci_domain_nr'; did you mean 'pci_iomap_wc'?
> 
> Unfortunately, 37bd62d224c82 ("PCI: Enable PCI_DOMAINS along with generic
> PCI host controller") has pretty much the same result. No idea how to fix
> the problem, so I won't even try.

Sorry about that.

One option would consist in removing all PCI_DOMAINS selection from
drivers/pci/controller/Kconfig and delegate it to arches even though
this would force PCI_DOMAINS selection on all ARM platforms (it is
already selected for ARCH_MULTIPLATFORM).

Or we add back arch dependency to the relevant host bridges.

Everything else I have in mind seems overkill to me given that this
patch was added to improve test coverage (we could add a default
pci_domain_nr() stub - weak or #define - that returns 0 in case arches
do not provide an implementation but do we really want to do that ?).

Thoughts appreciated.

Lorenzo

> Guenter
> 
> > ---
> > v4: Drop iProc hunks
> > 
> >  drivers/pci/dwc/Kconfig  | 24 ++++++++++++------------
> >  drivers/pci/host/Kconfig | 31 ++++++++++++++-----------------
> >  2 files changed, 26 insertions(+), 29 deletions(-)
> > 
> > diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
> > index 8c1a5167fb5b..2902544f5834 100644
> > --- a/drivers/pci/dwc/Kconfig
> > +++ b/drivers/pci/dwc/Kconfig
> > @@ -64,21 +64,21 @@ config PCIE_DW_PLAT
> >  
> >  config PCI_EXYNOS
> >  	bool "Samsung Exynos PCIe controller"
> > -	depends on SOC_EXYNOS5440
> > +	depends on SOC_EXYNOS5440 || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> >  
> >  config PCI_IMX6
> >  	bool "Freescale i.MX6 PCIe controller"
> > -	depends on SOC_IMX6Q
> > +	depends on SOC_IMX6Q || (ARM && COMPILE_TEST)
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> >  
> >  config PCIE_SPEAR13XX
> >  	bool "STMicroelectronics SPEAr PCIe controller"
> > -	depends on ARCH_SPEAR13XX
> > +	depends on ARCH_SPEAR13XX || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > @@ -87,7 +87,7 @@ config PCIE_SPEAR13XX
> >  
> >  config PCI_KEYSTONE
> >  	bool "TI Keystone PCIe controller"
> > -	depends on ARCH_KEYSTONE
> > +	depends on ARCH_KEYSTONE || (ARM && COMPILE_TEST)
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > @@ -99,7 +99,7 @@ config PCI_KEYSTONE
> >  
> >  config PCI_LAYERSCAPE
> >  	bool "Freescale Layerscape PCIe controller"
> > -	depends on OF && (ARM || ARCH_LAYERSCAPE)
> > +	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select MFD_SYSCON
> >  	select PCIE_DW_HOST
> > @@ -107,7 +107,7 @@ config PCI_LAYERSCAPE
> >  	  Say Y here if you want PCIe controller support on Layerscape SoCs.
> >  
> >  config PCI_HISI
> > -	depends on OF && ARM64
> > +	depends on OF && (ARM64 || COMPILE_TEST)
> >  	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> > @@ -119,7 +119,7 @@ config PCI_HISI
> >  
> >  config PCIE_QCOM
> >  	bool "Qualcomm PCIe controller"
> > -	depends on ARCH_QCOM && OF
> > +	depends on OF && (ARCH_QCOM || COMPILE_TEST)
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > @@ -130,7 +130,7 @@ config PCIE_QCOM
> >  
> >  config PCIE_ARMADA_8K
> >  	bool "Marvell Armada-8K PCIe controller"
> > -	depends on ARCH_MVEBU
> > +	depends on ARCH_MVEBU || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > @@ -145,7 +145,7 @@ config PCIE_ARTPEC6
> >  
> >  config PCIE_ARTPEC6_HOST
> >  	bool "Axis ARTPEC-6 PCIe controller Host Mode"
> > -	depends on MACH_ARTPEC6
> > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > @@ -156,7 +156,7 @@ config PCIE_ARTPEC6_HOST
> >  
> >  config PCIE_ARTPEC6_EP
> >  	bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
> > -	depends on MACH_ARTPEC6
> > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> >  	depends on PCI_ENDPOINT
> >  	select PCIE_DW_EP
> >  	select PCIE_ARTPEC6
> > @@ -165,7 +165,7 @@ config PCIE_ARTPEC6_EP
> >  	  endpoint mode. This uses the DesignWare core.
> >  
> >  config PCIE_KIRIN
> > -	depends on OF && ARM64
> > +	depends on OF && (ARM64 || COMPILE_TEST)
> >  	bool "HiSilicon Kirin series SoCs PCIe controllers"
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> > @@ -176,7 +176,7 @@ config PCIE_KIRIN
> >  
> >  config PCIE_HISI_STB
> >  	bool "HiSilicon STB SoCs PCIe controllers"
> > -	depends on ARCH_HISI
> > +	depends on ARCH_HISI || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	select PCIEPORTBUS
> >  	select PCIE_DW_HOST
> > diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> > index 0d0177ce436c..3d180b594ff2 100644
> > --- a/drivers/pci/host/Kconfig
> > +++ b/drivers/pci/host/Kconfig
> > @@ -5,13 +5,13 @@ menu "PCI host controller drivers"
> >  
> >  config PCI_MVEBU
> >  	bool "Marvell EBU PCIe controller"
> > -	depends on ARCH_MVEBU || ARCH_DOVE
> > +	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
> >  	depends on ARM
> >  	depends on OF
> >  
> >  config PCI_AARDVARK
> >  	bool "Aardvark PCIe controller"
> > -	depends on ARCH_MVEBU && ARM64
> > +	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
> >  	depends on OF
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	help
> > @@ -21,7 +21,7 @@ config PCI_AARDVARK
> >  
> >  config PCIE_XILINX_NWL
> >  	bool "NWL PCIe Core"
> > -	depends on ARCH_ZYNQMP
> > +	depends on ARCH_ZYNQMP || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	help
> >  	 Say 'Y' here if you want kernel support for Xilinx
> > @@ -32,12 +32,11 @@ config PCIE_XILINX_NWL
> >  config PCI_FTPCI100
> >  	bool "Faraday Technology FTPCI100 PCI controller"
> >  	depends on OF
> > -	depends on ARM
> >  	default ARCH_GEMINI
> >  
> >  config PCI_TEGRA
> >  	bool "NVIDIA Tegra PCIe controller"
> > -	depends on ARCH_TEGRA
> > +	depends on ARCH_TEGRA || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	help
> >  	  Say Y here if you want support for the PCIe host controller found
> > @@ -45,8 +44,8 @@ config PCI_TEGRA
> >  
> >  config PCI_RCAR_GEN2
> >  	bool "Renesas R-Car Gen2 Internal PCI controller"
> > -	depends on ARM
> >  	depends on ARCH_RENESAS || COMPILE_TEST
> > +	depends on ARM
> >  	help
> >  	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
> >  	  There are 3 internal PCI controllers available with a single
> > @@ -54,7 +53,7 @@ config PCI_RCAR_GEN2
> >  
> >  config PCIE_RCAR
> >  	bool "Renesas R-Car PCIe controller"
> > -	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
> > +	depends on ARCH_RENESAS || COMPILE_TEST
> >  	depends on PCI_MSI_IRQ_DOMAIN
> >  	help
> >  	  Say Y here if you want PCIe controller support on R-Car SoCs.
> > @@ -65,7 +64,7 @@ config PCI_HOST_COMMON
> >  
> >  config PCI_HOST_GENERIC
> >  	bool "Generic PCI host controller"
> > -	depends on (ARM || ARM64) && OF
> > +	depends on OF
> >  	select PCI_HOST_COMMON
> >  	select IRQ_DOMAIN
> >  	help
> > @@ -74,14 +73,14 @@ config PCI_HOST_GENERIC
> >  
> >  config PCIE_XILINX
> >  	bool "Xilinx AXI PCIe host bridge support"
> > -	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
> > +	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC) || COMPILE_TEST
> >  	help
> >  	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
> >  	  Host Bridge driver.
> >  
> >  config PCI_XGENE
> >  	bool "X-Gene PCIe controller"
> > -	depends on ARM64
> > +	depends on ARM64 || COMPILE_TEST
> >  	depends on OF || (ACPI && PCI_QUIRKS)
> >  	select PCIEPORTBUS
> >  	help
> > @@ -101,7 +100,7 @@ config PCI_XGENE_MSI
> >  config PCI_V3_SEMI
> >  	bool "V3 Semiconductor PCI controller"
> >  	depends on OF
> > -	depends on ARM
> > +	depends on ARM || COMPILE_TEST
> >  	default ARCH_INTEGRATOR_AP
> >  
> >  config PCI_VERSATILE
> > @@ -147,8 +146,7 @@ config PCIE_IPROC_MSI
> >  
> >  config PCIE_ALTERA
> >  	bool "Altera PCIe controller"
> > -	depends on ARM || NIOS2
> > -	depends on OF_PCI
> > +	depends on ARM || NIOS2 || COMPILE_TEST
> >  	select PCI_DOMAINS
> >  	help
> >  	  Say Y here if you want to enable PCIe controller support on Altera
> > @@ -164,7 +162,7 @@ config PCIE_ALTERA_MSI
> >  
> >  config PCI_HOST_THUNDER_PEM
> >  	bool "Cavium Thunder PCIe controller to off-chip devices"
> > -	depends on ARM64
> > +	depends on ARM64 || COMPILE_TEST
> >  	depends on OF || (ACPI && PCI_QUIRKS)
> >  	select PCI_HOST_COMMON
> >  	help
> > @@ -172,7 +170,7 @@ config PCI_HOST_THUNDER_PEM
> >  
> >  config PCI_HOST_THUNDER_ECAM
> >  	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
> > -	depends on ARM64
> > +	depends on ARM64 || COMPILE_TEST
> >  	depends on OF || (ACPI && PCI_QUIRKS)
> >  	select PCI_HOST_COMMON
> >  	help
> > @@ -191,9 +189,8 @@ config PCIE_ROCKCHIP
> >  
> >  config PCIE_MEDIATEK
> >  	bool "MediaTek PCIe controller"
> > -	depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
> > +	depends on ARCH_MEDIATEK || COMPILE_TEST
> >  	depends on OF
> > -	depends on PCI
> >  	select PCIEPORTBUS
> >  	help
> >  	  Say Y here if you want to enable PCIe controller support on
Guenter Roeck June 13, 2018, 6:11 p.m. UTC | #5
On Wed, Jun 13, 2018 at 11:09:35AM +0100, Lorenzo Pieralisi wrote:
> [+Jan, Ley Foon, RMK]
> 
> On Tue, Jun 12, 2018 at 10:02:29AM -0700, Guenter Roeck wrote:
> > On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
> > > Add COMPILE_TEST on driver config options with it. Some ARM drivers
> > > still have arch dependencies, so we have to keep those dependent on ARM.
> > > 
> > > Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > > Cc: linux-pci@vger.kernel.org
> > > Signed-off-by: Rob Herring <robh@kernel.org>
> > 
> > This patch has the undesirable side effect that it selects PCI_DOMAINS for
> > sparc32:allmodconfig, which in turn results in
> > 
> > drivers/ata/pata_ali.c: In function 'ali_init_chipset':
> > drivers/ata/pata_ali.c:469:38: error:
> > 	implicit declaration of function 'pci_domain_nr'; did you mean 'pci_iomap_wc'?
> > 
> > Unfortunately, 37bd62d224c82 ("PCI: Enable PCI_DOMAINS along with generic
> > PCI host controller") has pretty much the same result. No idea how to fix
> > the problem, so I won't even try.
> 
> Sorry about that.
> 
> One option would consist in removing all PCI_DOMAINS selection from
> drivers/pci/controller/Kconfig and delegate it to arches even though
> this would force PCI_DOMAINS selection on all ARM platforms (it is
> already selected for ARCH_MULTIPLATFORM).
> 
> Or we add back arch dependency to the relevant host bridges.
> 
> Everything else I have in mind seems overkill to me given that this
> patch was added to improve test coverage (we could add a default
> pci_domain_nr() stub - weak or #define - that returns 0 in case arches
> do not provide an implementation but do we really want to do that ?).
> 
> Thoughts appreciated.
> 

From the definition of PCI_DOMAINS, I suspect the original idea was that
drivers should depend on it, not select it. Especially auto-selecting
it with PCI_HOST_GENERIC seems like a bad idea to me. However, that is
just me. I'll leave it up to Bjorn to decide what if anything he wants
to do about it.

Guenter

> Lorenzo
> 
> > Guenter
> > 
> > > ---
> > > v4: Drop iProc hunks
> > > 
> > >  drivers/pci/dwc/Kconfig  | 24 ++++++++++++------------
> > >  drivers/pci/host/Kconfig | 31 ++++++++++++++-----------------
> > >  2 files changed, 26 insertions(+), 29 deletions(-)
> > > 
> > > diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
> > > index 8c1a5167fb5b..2902544f5834 100644
> > > --- a/drivers/pci/dwc/Kconfig
> > > +++ b/drivers/pci/dwc/Kconfig
> > > @@ -64,21 +64,21 @@ config PCIE_DW_PLAT
> > >  
> > >  config PCI_EXYNOS
> > >  	bool "Samsung Exynos PCIe controller"
> > > -	depends on SOC_EXYNOS5440
> > > +	depends on SOC_EXYNOS5440 || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > >  
> > >  config PCI_IMX6
> > >  	bool "Freescale i.MX6 PCIe controller"
> > > -	depends on SOC_IMX6Q
> > > +	depends on SOC_IMX6Q || (ARM && COMPILE_TEST)
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > >  
> > >  config PCIE_SPEAR13XX
> > >  	bool "STMicroelectronics SPEAr PCIe controller"
> > > -	depends on ARCH_SPEAR13XX
> > > +	depends on ARCH_SPEAR13XX || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > @@ -87,7 +87,7 @@ config PCIE_SPEAR13XX
> > >  
> > >  config PCI_KEYSTONE
> > >  	bool "TI Keystone PCIe controller"
> > > -	depends on ARCH_KEYSTONE
> > > +	depends on ARCH_KEYSTONE || (ARM && COMPILE_TEST)
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > @@ -99,7 +99,7 @@ config PCI_KEYSTONE
> > >  
> > >  config PCI_LAYERSCAPE
> > >  	bool "Freescale Layerscape PCIe controller"
> > > -	depends on OF && (ARM || ARCH_LAYERSCAPE)
> > > +	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select MFD_SYSCON
> > >  	select PCIE_DW_HOST
> > > @@ -107,7 +107,7 @@ config PCI_LAYERSCAPE
> > >  	  Say Y here if you want PCIe controller support on Layerscape SoCs.
> > >  
> > >  config PCI_HISI
> > > -	depends on OF && ARM64
> > > +	depends on OF && (ARM64 || COMPILE_TEST)
> > >  	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > > @@ -119,7 +119,7 @@ config PCI_HISI
> > >  
> > >  config PCIE_QCOM
> > >  	bool "Qualcomm PCIe controller"
> > > -	depends on ARCH_QCOM && OF
> > > +	depends on OF && (ARCH_QCOM || COMPILE_TEST)
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > @@ -130,7 +130,7 @@ config PCIE_QCOM
> > >  
> > >  config PCIE_ARMADA_8K
> > >  	bool "Marvell Armada-8K PCIe controller"
> > > -	depends on ARCH_MVEBU
> > > +	depends on ARCH_MVEBU || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > @@ -145,7 +145,7 @@ config PCIE_ARTPEC6
> > >  
> > >  config PCIE_ARTPEC6_HOST
> > >  	bool "Axis ARTPEC-6 PCIe controller Host Mode"
> > > -	depends on MACH_ARTPEC6
> > > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > @@ -156,7 +156,7 @@ config PCIE_ARTPEC6_HOST
> > >  
> > >  config PCIE_ARTPEC6_EP
> > >  	bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
> > > -	depends on MACH_ARTPEC6
> > > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> > >  	depends on PCI_ENDPOINT
> > >  	select PCIE_DW_EP
> > >  	select PCIE_ARTPEC6
> > > @@ -165,7 +165,7 @@ config PCIE_ARTPEC6_EP
> > >  	  endpoint mode. This uses the DesignWare core.
> > >  
> > >  config PCIE_KIRIN
> > > -	depends on OF && ARM64
> > > +	depends on OF && (ARM64 || COMPILE_TEST)
> > >  	bool "HiSilicon Kirin series SoCs PCIe controllers"
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > > @@ -176,7 +176,7 @@ config PCIE_KIRIN
> > >  
> > >  config PCIE_HISI_STB
> > >  	bool "HiSilicon STB SoCs PCIe controllers"
> > > -	depends on ARCH_HISI
> > > +	depends on ARCH_HISI || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	select PCIEPORTBUS
> > >  	select PCIE_DW_HOST
> > > diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> > > index 0d0177ce436c..3d180b594ff2 100644
> > > --- a/drivers/pci/host/Kconfig
> > > +++ b/drivers/pci/host/Kconfig
> > > @@ -5,13 +5,13 @@ menu "PCI host controller drivers"
> > >  
> > >  config PCI_MVEBU
> > >  	bool "Marvell EBU PCIe controller"
> > > -	depends on ARCH_MVEBU || ARCH_DOVE
> > > +	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
> > >  	depends on ARM
> > >  	depends on OF
> > >  
> > >  config PCI_AARDVARK
> > >  	bool "Aardvark PCIe controller"
> > > -	depends on ARCH_MVEBU && ARM64
> > > +	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
> > >  	depends on OF
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	help
> > > @@ -21,7 +21,7 @@ config PCI_AARDVARK
> > >  
> > >  config PCIE_XILINX_NWL
> > >  	bool "NWL PCIe Core"
> > > -	depends on ARCH_ZYNQMP
> > > +	depends on ARCH_ZYNQMP || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	help
> > >  	 Say 'Y' here if you want kernel support for Xilinx
> > > @@ -32,12 +32,11 @@ config PCIE_XILINX_NWL
> > >  config PCI_FTPCI100
> > >  	bool "Faraday Technology FTPCI100 PCI controller"
> > >  	depends on OF
> > > -	depends on ARM
> > >  	default ARCH_GEMINI
> > >  
> > >  config PCI_TEGRA
> > >  	bool "NVIDIA Tegra PCIe controller"
> > > -	depends on ARCH_TEGRA
> > > +	depends on ARCH_TEGRA || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	help
> > >  	  Say Y here if you want support for the PCIe host controller found
> > > @@ -45,8 +44,8 @@ config PCI_TEGRA
> > >  
> > >  config PCI_RCAR_GEN2
> > >  	bool "Renesas R-Car Gen2 Internal PCI controller"
> > > -	depends on ARM
> > >  	depends on ARCH_RENESAS || COMPILE_TEST
> > > +	depends on ARM
> > >  	help
> > >  	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
> > >  	  There are 3 internal PCI controllers available with a single
> > > @@ -54,7 +53,7 @@ config PCI_RCAR_GEN2
> > >  
> > >  config PCIE_RCAR
> > >  	bool "Renesas R-Car PCIe controller"
> > > -	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
> > > +	depends on ARCH_RENESAS || COMPILE_TEST
> > >  	depends on PCI_MSI_IRQ_DOMAIN
> > >  	help
> > >  	  Say Y here if you want PCIe controller support on R-Car SoCs.
> > > @@ -65,7 +64,7 @@ config PCI_HOST_COMMON
> > >  
> > >  config PCI_HOST_GENERIC
> > >  	bool "Generic PCI host controller"
> > > -	depends on (ARM || ARM64) && OF
> > > +	depends on OF
> > >  	select PCI_HOST_COMMON
> > >  	select IRQ_DOMAIN
> > >  	help
> > > @@ -74,14 +73,14 @@ config PCI_HOST_GENERIC
> > >  
> > >  config PCIE_XILINX
> > >  	bool "Xilinx AXI PCIe host bridge support"
> > > -	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
> > > +	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC) || COMPILE_TEST
> > >  	help
> > >  	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
> > >  	  Host Bridge driver.
> > >  
> > >  config PCI_XGENE
> > >  	bool "X-Gene PCIe controller"
> > > -	depends on ARM64
> > > +	depends on ARM64 || COMPILE_TEST
> > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > >  	select PCIEPORTBUS
> > >  	help
> > > @@ -101,7 +100,7 @@ config PCI_XGENE_MSI
> > >  config PCI_V3_SEMI
> > >  	bool "V3 Semiconductor PCI controller"
> > >  	depends on OF
> > > -	depends on ARM
> > > +	depends on ARM || COMPILE_TEST
> > >  	default ARCH_INTEGRATOR_AP
> > >  
> > >  config PCI_VERSATILE
> > > @@ -147,8 +146,7 @@ config PCIE_IPROC_MSI
> > >  
> > >  config PCIE_ALTERA
> > >  	bool "Altera PCIe controller"
> > > -	depends on ARM || NIOS2
> > > -	depends on OF_PCI
> > > +	depends on ARM || NIOS2 || COMPILE_TEST
> > >  	select PCI_DOMAINS
> > >  	help
> > >  	  Say Y here if you want to enable PCIe controller support on Altera
> > > @@ -164,7 +162,7 @@ config PCIE_ALTERA_MSI
> > >  
> > >  config PCI_HOST_THUNDER_PEM
> > >  	bool "Cavium Thunder PCIe controller to off-chip devices"
> > > -	depends on ARM64
> > > +	depends on ARM64 || COMPILE_TEST
> > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > >  	select PCI_HOST_COMMON
> > >  	help
> > > @@ -172,7 +170,7 @@ config PCI_HOST_THUNDER_PEM
> > >  
> > >  config PCI_HOST_THUNDER_ECAM
> > >  	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
> > > -	depends on ARM64
> > > +	depends on ARM64 || COMPILE_TEST
> > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > >  	select PCI_HOST_COMMON
> > >  	help
> > > @@ -191,9 +189,8 @@ config PCIE_ROCKCHIP
> > >  
> > >  config PCIE_MEDIATEK
> > >  	bool "MediaTek PCIe controller"
> > > -	depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
> > > +	depends on ARCH_MEDIATEK || COMPILE_TEST
> > >  	depends on OF
> > > -	depends on PCI
> > >  	select PCIEPORTBUS
> > >  	help
> > >  	  Say Y here if you want to enable PCIe controller support on
Lorenzo Pieralisi June 14, 2018, 4:53 p.m. UTC | #6
On Wed, Jun 13, 2018 at 11:11:46AM -0700, Guenter Roeck wrote:
> On Wed, Jun 13, 2018 at 11:09:35AM +0100, Lorenzo Pieralisi wrote:
> > [+Jan, Ley Foon, RMK]
> > 
> > On Tue, Jun 12, 2018 at 10:02:29AM -0700, Guenter Roeck wrote:
> > > On Thu, Apr 05, 2018 at 02:31:54PM -0500, Rob Herring wrote:
> > > > Add COMPILE_TEST on driver config options with it. Some ARM drivers
> > > > still have arch dependencies, so we have to keep those dependent on ARM.
> > > > 
> > > > Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> > > > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > > > Cc: linux-pci@vger.kernel.org
> > > > Signed-off-by: Rob Herring <robh@kernel.org>
> > > 
> > > This patch has the undesirable side effect that it selects PCI_DOMAINS for
> > > sparc32:allmodconfig, which in turn results in
> > > 
> > > drivers/ata/pata_ali.c: In function 'ali_init_chipset':
> > > drivers/ata/pata_ali.c:469:38: error:
> > > 	implicit declaration of function 'pci_domain_nr'; did you mean 'pci_iomap_wc'?
> > > 
> > > Unfortunately, 37bd62d224c82 ("PCI: Enable PCI_DOMAINS along with generic
> > > PCI host controller") has pretty much the same result. No idea how to fix
> > > the problem, so I won't even try.
> > 
> > Sorry about that.
> > 
> > One option would consist in removing all PCI_DOMAINS selection from
> > drivers/pci/controller/Kconfig and delegate it to arches even though
> > this would force PCI_DOMAINS selection on all ARM platforms (it is
> > already selected for ARCH_MULTIPLATFORM).
> > 
> > Or we add back arch dependency to the relevant host bridges.
> > 
> > Everything else I have in mind seems overkill to me given that this
> > patch was added to improve test coverage (we could add a default
> > pci_domain_nr() stub - weak or #define - that returns 0 in case arches
> > do not provide an implementation but do we really want to do that ?).
> > 
> > Thoughts appreciated.
> > 
> 
> From the definition of PCI_DOMAINS, I suspect the original idea was that
> drivers should depend on it, not select it.

I do not think that's the case, a host controller should not really
depend on it.

> Especially auto-selecting it with PCI_HOST_GENERIC seems like a bad
> idea to me. However, that is just me. I'll leave it up to Bjorn to
> decide what if anything he wants to do about it.

I think that on ARM (32-bit) systems it is supposed to be selected
so that it is not pulled in if not "needed". As I said I could make
it:

def_bool PCI

on ARM but my worry is that it has consequences on legacy ARM PCI host
drivers in arch/arm, I really do not know what happens if I enable
it by default.

Another option would consist in making PCI_DOMAINS a visible menu
option on ARM, so that it can be configured in the kernel if needed,
in that case I can safely remove all selection from
drivers/pci/controller/Kconfig; I am not a big fan of this solution
either but I think that's the least evil.

I do not think there is any other quick option available.

Lorenzo

> 
> Guenter
> 
> > Lorenzo
> > 
> > > Guenter
> > > 
> > > > ---
> > > > v4: Drop iProc hunks
> > > > 
> > > >  drivers/pci/dwc/Kconfig  | 24 ++++++++++++------------
> > > >  drivers/pci/host/Kconfig | 31 ++++++++++++++-----------------
> > > >  2 files changed, 26 insertions(+), 29 deletions(-)
> > > > 
> > > > diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
> > > > index 8c1a5167fb5b..2902544f5834 100644
> > > > --- a/drivers/pci/dwc/Kconfig
> > > > +++ b/drivers/pci/dwc/Kconfig
> > > > @@ -64,21 +64,21 @@ config PCIE_DW_PLAT
> > > >  
> > > >  config PCI_EXYNOS
> > > >  	bool "Samsung Exynos PCIe controller"
> > > > -	depends on SOC_EXYNOS5440
> > > > +	depends on SOC_EXYNOS5440 || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > >  
> > > >  config PCI_IMX6
> > > >  	bool "Freescale i.MX6 PCIe controller"
> > > > -	depends on SOC_IMX6Q
> > > > +	depends on SOC_IMX6Q || (ARM && COMPILE_TEST)
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > >  
> > > >  config PCIE_SPEAR13XX
> > > >  	bool "STMicroelectronics SPEAr PCIe controller"
> > > > -	depends on ARCH_SPEAR13XX
> > > > +	depends on ARCH_SPEAR13XX || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > @@ -87,7 +87,7 @@ config PCIE_SPEAR13XX
> > > >  
> > > >  config PCI_KEYSTONE
> > > >  	bool "TI Keystone PCIe controller"
> > > > -	depends on ARCH_KEYSTONE
> > > > +	depends on ARCH_KEYSTONE || (ARM && COMPILE_TEST)
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > @@ -99,7 +99,7 @@ config PCI_KEYSTONE
> > > >  
> > > >  config PCI_LAYERSCAPE
> > > >  	bool "Freescale Layerscape PCIe controller"
> > > > -	depends on OF && (ARM || ARCH_LAYERSCAPE)
> > > > +	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select MFD_SYSCON
> > > >  	select PCIE_DW_HOST
> > > > @@ -107,7 +107,7 @@ config PCI_LAYERSCAPE
> > > >  	  Say Y here if you want PCIe controller support on Layerscape SoCs.
> > > >  
> > > >  config PCI_HISI
> > > > -	depends on OF && ARM64
> > > > +	depends on OF && (ARM64 || COMPILE_TEST)
> > > >  	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > > @@ -119,7 +119,7 @@ config PCI_HISI
> > > >  
> > > >  config PCIE_QCOM
> > > >  	bool "Qualcomm PCIe controller"
> > > > -	depends on ARCH_QCOM && OF
> > > > +	depends on OF && (ARCH_QCOM || COMPILE_TEST)
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > @@ -130,7 +130,7 @@ config PCIE_QCOM
> > > >  
> > > >  config PCIE_ARMADA_8K
> > > >  	bool "Marvell Armada-8K PCIe controller"
> > > > -	depends on ARCH_MVEBU
> > > > +	depends on ARCH_MVEBU || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > @@ -145,7 +145,7 @@ config PCIE_ARTPEC6
> > > >  
> > > >  config PCIE_ARTPEC6_HOST
> > > >  	bool "Axis ARTPEC-6 PCIe controller Host Mode"
> > > > -	depends on MACH_ARTPEC6
> > > > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > @@ -156,7 +156,7 @@ config PCIE_ARTPEC6_HOST
> > > >  
> > > >  config PCIE_ARTPEC6_EP
> > > >  	bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
> > > > -	depends on MACH_ARTPEC6
> > > > +	depends on MACH_ARTPEC6 || COMPILE_TEST
> > > >  	depends on PCI_ENDPOINT
> > > >  	select PCIE_DW_EP
> > > >  	select PCIE_ARTPEC6
> > > > @@ -165,7 +165,7 @@ config PCIE_ARTPEC6_EP
> > > >  	  endpoint mode. This uses the DesignWare core.
> > > >  
> > > >  config PCIE_KIRIN
> > > > -	depends on OF && ARM64
> > > > +	depends on OF && (ARM64 || COMPILE_TEST)
> > > >  	bool "HiSilicon Kirin series SoCs PCIe controllers"
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > > @@ -176,7 +176,7 @@ config PCIE_KIRIN
> > > >  
> > > >  config PCIE_HISI_STB
> > > >  	bool "HiSilicon STB SoCs PCIe controllers"
> > > > -	depends on ARCH_HISI
> > > > +	depends on ARCH_HISI || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	select PCIEPORTBUS
> > > >  	select PCIE_DW_HOST
> > > > diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> > > > index 0d0177ce436c..3d180b594ff2 100644
> > > > --- a/drivers/pci/host/Kconfig
> > > > +++ b/drivers/pci/host/Kconfig
> > > > @@ -5,13 +5,13 @@ menu "PCI host controller drivers"
> > > >  
> > > >  config PCI_MVEBU
> > > >  	bool "Marvell EBU PCIe controller"
> > > > -	depends on ARCH_MVEBU || ARCH_DOVE
> > > > +	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
> > > >  	depends on ARM
> > > >  	depends on OF
> > > >  
> > > >  config PCI_AARDVARK
> > > >  	bool "Aardvark PCIe controller"
> > > > -	depends on ARCH_MVEBU && ARM64
> > > > +	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
> > > >  	depends on OF
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	help
> > > > @@ -21,7 +21,7 @@ config PCI_AARDVARK
> > > >  
> > > >  config PCIE_XILINX_NWL
> > > >  	bool "NWL PCIe Core"
> > > > -	depends on ARCH_ZYNQMP
> > > > +	depends on ARCH_ZYNQMP || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	help
> > > >  	 Say 'Y' here if you want kernel support for Xilinx
> > > > @@ -32,12 +32,11 @@ config PCIE_XILINX_NWL
> > > >  config PCI_FTPCI100
> > > >  	bool "Faraday Technology FTPCI100 PCI controller"
> > > >  	depends on OF
> > > > -	depends on ARM
> > > >  	default ARCH_GEMINI
> > > >  
> > > >  config PCI_TEGRA
> > > >  	bool "NVIDIA Tegra PCIe controller"
> > > > -	depends on ARCH_TEGRA
> > > > +	depends on ARCH_TEGRA || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	help
> > > >  	  Say Y here if you want support for the PCIe host controller found
> > > > @@ -45,8 +44,8 @@ config PCI_TEGRA
> > > >  
> > > >  config PCI_RCAR_GEN2
> > > >  	bool "Renesas R-Car Gen2 Internal PCI controller"
> > > > -	depends on ARM
> > > >  	depends on ARCH_RENESAS || COMPILE_TEST
> > > > +	depends on ARM
> > > >  	help
> > > >  	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
> > > >  	  There are 3 internal PCI controllers available with a single
> > > > @@ -54,7 +53,7 @@ config PCI_RCAR_GEN2
> > > >  
> > > >  config PCIE_RCAR
> > > >  	bool "Renesas R-Car PCIe controller"
> > > > -	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
> > > > +	depends on ARCH_RENESAS || COMPILE_TEST
> > > >  	depends on PCI_MSI_IRQ_DOMAIN
> > > >  	help
> > > >  	  Say Y here if you want PCIe controller support on R-Car SoCs.
> > > > @@ -65,7 +64,7 @@ config PCI_HOST_COMMON
> > > >  
> > > >  config PCI_HOST_GENERIC
> > > >  	bool "Generic PCI host controller"
> > > > -	depends on (ARM || ARM64) && OF
> > > > +	depends on OF
> > > >  	select PCI_HOST_COMMON
> > > >  	select IRQ_DOMAIN
> > > >  	help
> > > > @@ -74,14 +73,14 @@ config PCI_HOST_GENERIC
> > > >  
> > > >  config PCIE_XILINX
> > > >  	bool "Xilinx AXI PCIe host bridge support"
> > > > -	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
> > > > +	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC) || COMPILE_TEST
> > > >  	help
> > > >  	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
> > > >  	  Host Bridge driver.
> > > >  
> > > >  config PCI_XGENE
> > > >  	bool "X-Gene PCIe controller"
> > > > -	depends on ARM64
> > > > +	depends on ARM64 || COMPILE_TEST
> > > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > > >  	select PCIEPORTBUS
> > > >  	help
> > > > @@ -101,7 +100,7 @@ config PCI_XGENE_MSI
> > > >  config PCI_V3_SEMI
> > > >  	bool "V3 Semiconductor PCI controller"
> > > >  	depends on OF
> > > > -	depends on ARM
> > > > +	depends on ARM || COMPILE_TEST
> > > >  	default ARCH_INTEGRATOR_AP
> > > >  
> > > >  config PCI_VERSATILE
> > > > @@ -147,8 +146,7 @@ config PCIE_IPROC_MSI
> > > >  
> > > >  config PCIE_ALTERA
> > > >  	bool "Altera PCIe controller"
> > > > -	depends on ARM || NIOS2
> > > > -	depends on OF_PCI
> > > > +	depends on ARM || NIOS2 || COMPILE_TEST
> > > >  	select PCI_DOMAINS
> > > >  	help
> > > >  	  Say Y here if you want to enable PCIe controller support on Altera
> > > > @@ -164,7 +162,7 @@ config PCIE_ALTERA_MSI
> > > >  
> > > >  config PCI_HOST_THUNDER_PEM
> > > >  	bool "Cavium Thunder PCIe controller to off-chip devices"
> > > > -	depends on ARM64
> > > > +	depends on ARM64 || COMPILE_TEST
> > > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > > >  	select PCI_HOST_COMMON
> > > >  	help
> > > > @@ -172,7 +170,7 @@ config PCI_HOST_THUNDER_PEM
> > > >  
> > > >  config PCI_HOST_THUNDER_ECAM
> > > >  	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
> > > > -	depends on ARM64
> > > > +	depends on ARM64 || COMPILE_TEST
> > > >  	depends on OF || (ACPI && PCI_QUIRKS)
> > > >  	select PCI_HOST_COMMON
> > > >  	help
> > > > @@ -191,9 +189,8 @@ config PCIE_ROCKCHIP
> > > >  
> > > >  config PCIE_MEDIATEK
> > > >  	bool "MediaTek PCIe controller"
> > > > -	depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
> > > > +	depends on ARCH_MEDIATEK || COMPILE_TEST
> > > >  	depends on OF
> > > > -	depends on PCI
> > > >  	select PCIEPORTBUS
> > > >  	help
> > > >  	  Say Y here if you want to enable PCIe controller support on
diff mbox

Patch

diff --git a/drivers/pci/dwc/Kconfig b/drivers/pci/dwc/Kconfig
index 8c1a5167fb5b..2902544f5834 100644
--- a/drivers/pci/dwc/Kconfig
+++ b/drivers/pci/dwc/Kconfig
@@ -64,21 +64,21 @@  config PCIE_DW_PLAT
 
 config PCI_EXYNOS
 	bool "Samsung Exynos PCIe controller"
-	depends on SOC_EXYNOS5440
+	depends on SOC_EXYNOS5440 || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
 
 config PCI_IMX6
 	bool "Freescale i.MX6 PCIe controller"
-	depends on SOC_IMX6Q
+	depends on SOC_IMX6Q || (ARM && COMPILE_TEST)
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
 
 config PCIE_SPEAR13XX
 	bool "STMicroelectronics SPEAr PCIe controller"
-	depends on ARCH_SPEAR13XX
+	depends on ARCH_SPEAR13XX || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
@@ -87,7 +87,7 @@  config PCIE_SPEAR13XX
 
 config PCI_KEYSTONE
 	bool "TI Keystone PCIe controller"
-	depends on ARCH_KEYSTONE
+	depends on ARCH_KEYSTONE || (ARM && COMPILE_TEST)
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
@@ -99,7 +99,7 @@  config PCI_KEYSTONE
 
 config PCI_LAYERSCAPE
 	bool "Freescale Layerscape PCIe controller"
-	depends on OF && (ARM || ARCH_LAYERSCAPE)
+	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
 	depends on PCI_MSI_IRQ_DOMAIN
 	select MFD_SYSCON
 	select PCIE_DW_HOST
@@ -107,7 +107,7 @@  config PCI_LAYERSCAPE
 	  Say Y here if you want PCIe controller support on Layerscape SoCs.
 
 config PCI_HISI
-	depends on OF && ARM64
+	depends on OF && (ARM64 || COMPILE_TEST)
 	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
@@ -119,7 +119,7 @@  config PCI_HISI
 
 config PCIE_QCOM
 	bool "Qualcomm PCIe controller"
-	depends on ARCH_QCOM && OF
+	depends on OF && (ARCH_QCOM || COMPILE_TEST)
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
@@ -130,7 +130,7 @@  config PCIE_QCOM
 
 config PCIE_ARMADA_8K
 	bool "Marvell Armada-8K PCIe controller"
-	depends on ARCH_MVEBU
+	depends on ARCH_MVEBU || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
@@ -145,7 +145,7 @@  config PCIE_ARTPEC6
 
 config PCIE_ARTPEC6_HOST
 	bool "Axis ARTPEC-6 PCIe controller Host Mode"
-	depends on MACH_ARTPEC6
+	depends on MACH_ARTPEC6 || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
@@ -156,7 +156,7 @@  config PCIE_ARTPEC6_HOST
 
 config PCIE_ARTPEC6_EP
 	bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
-	depends on MACH_ARTPEC6
+	depends on MACH_ARTPEC6 || COMPILE_TEST
 	depends on PCI_ENDPOINT
 	select PCIE_DW_EP
 	select PCIE_ARTPEC6
@@ -165,7 +165,7 @@  config PCIE_ARTPEC6_EP
 	  endpoint mode. This uses the DesignWare core.
 
 config PCIE_KIRIN
-	depends on OF && ARM64
+	depends on OF && (ARM64 || COMPILE_TEST)
 	bool "HiSilicon Kirin series SoCs PCIe controllers"
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
@@ -176,7 +176,7 @@  config PCIE_KIRIN
 
 config PCIE_HISI_STB
 	bool "HiSilicon STB SoCs PCIe controllers"
-	depends on ARCH_HISI
+	depends on ARCH_HISI || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	select PCIEPORTBUS
 	select PCIE_DW_HOST
diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
index 0d0177ce436c..3d180b594ff2 100644
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -5,13 +5,13 @@  menu "PCI host controller drivers"
 
 config PCI_MVEBU
 	bool "Marvell EBU PCIe controller"
-	depends on ARCH_MVEBU || ARCH_DOVE
+	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
 	depends on ARM
 	depends on OF
 
 config PCI_AARDVARK
 	bool "Aardvark PCIe controller"
-	depends on ARCH_MVEBU && ARM64
+	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
 	depends on OF
 	depends on PCI_MSI_IRQ_DOMAIN
 	help
@@ -21,7 +21,7 @@  config PCI_AARDVARK
 
 config PCIE_XILINX_NWL
 	bool "NWL PCIe Core"
-	depends on ARCH_ZYNQMP
+	depends on ARCH_ZYNQMP || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	help
 	 Say 'Y' here if you want kernel support for Xilinx
@@ -32,12 +32,11 @@  config PCIE_XILINX_NWL
 config PCI_FTPCI100
 	bool "Faraday Technology FTPCI100 PCI controller"
 	depends on OF
-	depends on ARM
 	default ARCH_GEMINI
 
 config PCI_TEGRA
 	bool "NVIDIA Tegra PCIe controller"
-	depends on ARCH_TEGRA
+	depends on ARCH_TEGRA || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	help
 	  Say Y here if you want support for the PCIe host controller found
@@ -45,8 +44,8 @@  config PCI_TEGRA
 
 config PCI_RCAR_GEN2
 	bool "Renesas R-Car Gen2 Internal PCI controller"
-	depends on ARM
 	depends on ARCH_RENESAS || COMPILE_TEST
+	depends on ARM
 	help
 	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
 	  There are 3 internal PCI controllers available with a single
@@ -54,7 +53,7 @@  config PCI_RCAR_GEN2
 
 config PCIE_RCAR
 	bool "Renesas R-Car PCIe controller"
-	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
+	depends on ARCH_RENESAS || COMPILE_TEST
 	depends on PCI_MSI_IRQ_DOMAIN
 	help
 	  Say Y here if you want PCIe controller support on R-Car SoCs.
@@ -65,7 +64,7 @@  config PCI_HOST_COMMON
 
 config PCI_HOST_GENERIC
 	bool "Generic PCI host controller"
-	depends on (ARM || ARM64) && OF
+	depends on OF
 	select PCI_HOST_COMMON
 	select IRQ_DOMAIN
 	help
@@ -74,14 +73,14 @@  config PCI_HOST_GENERIC
 
 config PCIE_XILINX
 	bool "Xilinx AXI PCIe host bridge support"
-	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC)
+	depends on ARCH_ZYNQ || MICROBLAZE || (MIPS && PCI_DRIVERS_GENERIC) || COMPILE_TEST
 	help
 	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
 	  Host Bridge driver.
 
 config PCI_XGENE
 	bool "X-Gene PCIe controller"
-	depends on ARM64
+	depends on ARM64 || COMPILE_TEST
 	depends on OF || (ACPI && PCI_QUIRKS)
 	select PCIEPORTBUS
 	help
@@ -101,7 +100,7 @@  config PCI_XGENE_MSI
 config PCI_V3_SEMI
 	bool "V3 Semiconductor PCI controller"
 	depends on OF
-	depends on ARM
+	depends on ARM || COMPILE_TEST
 	default ARCH_INTEGRATOR_AP
 
 config PCI_VERSATILE
@@ -147,8 +146,7 @@  config PCIE_IPROC_MSI
 
 config PCIE_ALTERA
 	bool "Altera PCIe controller"
-	depends on ARM || NIOS2
-	depends on OF_PCI
+	depends on ARM || NIOS2 || COMPILE_TEST
 	select PCI_DOMAINS
 	help
 	  Say Y here if you want to enable PCIe controller support on Altera
@@ -164,7 +162,7 @@  config PCIE_ALTERA_MSI
 
 config PCI_HOST_THUNDER_PEM
 	bool "Cavium Thunder PCIe controller to off-chip devices"
-	depends on ARM64
+	depends on ARM64 || COMPILE_TEST
 	depends on OF || (ACPI && PCI_QUIRKS)
 	select PCI_HOST_COMMON
 	help
@@ -172,7 +170,7 @@  config PCI_HOST_THUNDER_PEM
 
 config PCI_HOST_THUNDER_ECAM
 	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
-	depends on ARM64
+	depends on ARM64 || COMPILE_TEST
 	depends on OF || (ACPI && PCI_QUIRKS)
 	select PCI_HOST_COMMON
 	help
@@ -191,9 +189,8 @@  config PCIE_ROCKCHIP
 
 config PCIE_MEDIATEK
 	bool "MediaTek PCIe controller"
-	depends on (ARM || ARM64) && (ARCH_MEDIATEK || COMPILE_TEST)
+	depends on ARCH_MEDIATEK || COMPILE_TEST
 	depends on OF
-	depends on PCI
 	select PCIEPORTBUS
 	help
 	  Say Y here if you want to enable PCIe controller support on