On Wed, 26 Aug 2020 12:17:02 +0100,
Thomas Gleixner <t...@linutronix.de> wrote:
> 
> From: Thomas Gleixner <t...@linutronix.de>
> 
> The arch_.*_msi_irq[s] fallbacks are compiled in whether an architecture
> requires them or not. Architectures which are fully utilizing hierarchical
> irq domains should never call into that code.
> 
> It's not only architectures which depend on that by implementing one or
> more of the weak functions, there is also a bunch of drivers which relies
> on the weak functions which invoke msi_controller::setup_irq[s] and
> msi_controller::teardown_irq.
> 
> Make the architectures and drivers which rely on them select them in Kconfig
> and if not selected replace them by stub functions which emit a warning and
> fail the PCI/MSI interrupt allocation.
> 
> Signed-off-by: Thomas Gleixner <t...@linutronix.de>
> ---
> V2: Make the architectures (and drivers) which need the fallbacks select them
>     and not the other way round (Bjorn).
> ---
>  arch/ia64/Kconfig              |    1 +
>  arch/mips/Kconfig              |    1 +
>  arch/powerpc/Kconfig           |    1 +
>  arch/s390/Kconfig              |    1 +
>  arch/sparc/Kconfig             |    1 +
>  arch/x86/Kconfig               |    1 +
>  drivers/pci/Kconfig            |    3 +++
>  drivers/pci/controller/Kconfig |    3 +++
>  drivers/pci/msi.c              |    3 ++-
>  include/linux/msi.h            |   31 ++++++++++++++++++++++++++-----
>  10 files changed, 40 insertions(+), 6 deletions(-)
> 

[...]

> --- a/drivers/pci/controller/Kconfig
> +++ b/drivers/pci/controller/Kconfig
> @@ -41,6 +41,7 @@ config PCI_TEGRA
>       bool "NVIDIA Tegra PCIe controller"
>       depends on ARCH_TEGRA || COMPILE_TEST
>       depends on PCI_MSI_IRQ_DOMAIN
> +     select PCI_MSI_ARCH_FALLBACKS
>       help
>         Say Y here if you want support for the PCIe host controller found
>         on NVIDIA Tegra SoCs.
> @@ -67,6 +68,7 @@ config PCIE_RCAR_HOST
>       bool "Renesas R-Car PCIe host controller"
>       depends on ARCH_RENESAS || COMPILE_TEST
>       depends on PCI_MSI_IRQ_DOMAIN
> +     select PCI_MSI_ARCH_FALLBACKS
>       help
>         Say Y here if you want PCIe controller support on R-Car SoCs in host
>         mode.
> @@ -103,6 +105,7 @@ config PCIE_XILINX_CPM
>       bool "Xilinx Versal CPM host bridge support"
>       depends on ARCH_ZYNQMP || COMPILE_TEST
>       select PCI_HOST_COMMON
> +     select PCI_MSI_ARCH_FALLBACKS

This guy actually doesn't implement MSIs at all (it seems to delegate
them to an ITS present in the system, if I read the DT binding
correctly). However its older brother from the same silicon dealer
seems to need it. The patchlet below should fix it.

diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
index 9ad13919bcaa..f56ff049d469 100644
--- a/drivers/pci/controller/Kconfig
+++ b/drivers/pci/controller/Kconfig
@@ -96,6 +96,7 @@ config PCI_HOST_GENERIC
 
 config PCIE_XILINX
        bool "Xilinx AXI PCIe host bridge support"
+       select PCI_MSI_ARCH_FALLBACKS
        depends on OF || COMPILE_TEST
        help
          Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
@@ -105,7 +106,6 @@ config PCIE_XILINX_CPM
        bool "Xilinx Versal CPM host bridge support"
        depends on ARCH_ZYNQMP || COMPILE_TEST
        select PCI_HOST_COMMON
-       select PCI_MSI_ARCH_FALLBACKS
        help
          Say 'Y' here if you want kernel support for the
          Xilinx Versal CPM host bridge.


With that fixed,

Acked-by: Marc Zyngier <m...@kernel.org>

        M.

-- 
Without deviation from the norm, progress is not possible.

Reply via email to