diff mbox

pci: tegra: add MSI dependency

Message ID 20180313115218.2246372-1-arnd@arndb.de (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Arnd Bergmann March 13, 2018, 11:52 a.m. UTC
Building the tegra PCIe host driver without MSI results in a link
failure:

drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'

This adds the same dependency that everyone else uses.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/pci/host/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Lorenzo Pieralisi March 14, 2018, 10:51 a.m. UTC | #1
On Tue, Mar 13, 2018 at 12:52:05PM +0100, Arnd Bergmann wrote:
> Building the tegra PCIe host driver without MSI results in a link
> failure:
> 
> drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
> drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'
> 
> This adds the same dependency that everyone else uses.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/pci/host/Kconfig | 1 +
>  1 file changed, 1 insertion(+)

Applied to pci/host/misc for v4.17, thanks.

Lorenzo

> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
> index 1fcdc890acc7..65b4afb8d11d 100644
> --- a/drivers/pci/host/Kconfig
> +++ b/drivers/pci/host/Kconfig
> @@ -38,6 +38,7 @@ config PCI_FTPCI100
>  config PCI_TEGRA
>  	bool "NVIDIA Tegra PCIe controller"
>  	depends on ARCH_TEGRA && MMU
> +	depends on PCI_MSI_IRQ_DOMAIN
>  	help
>  	  Say Y here if you want support for the PCIe host controller found
>  	  on NVIDIA Tegra SoCs.
> -- 
> 2.9.0
>
Thierry Reding March 14, 2018, 11:45 a.m. UTC | #2
On Tue, Mar 13, 2018 at 12:52:05PM +0100, Arnd Bergmann wrote:
> Building the tegra PCIe host driver without MSI results in a link
> failure:
> 
> drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
> drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'
> 
> This adds the same dependency that everyone else uses.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/pci/host/Kconfig | 1 +
>  1 file changed, 1 insertion(+)

I'm slightly concerned about the dependency. Not that I doubt its
correctness, but because it could mean that PCI_TEGRA is not visible in
the default configuration. The only reason why it is currently visible
is because PCI_MSI is selected by some symbols that also happen to be
enabled. However, what if at some point those symbols are disabled or
removed?

Some architectures make sure that PCI_MSI is enabled by selecting it,
but that's risky, isn't it, because PCI_MSI is user-visible and could
therefore easily lead to conflicts.

Enabling PCI_MSI in the arm64 defconfig would solve the issue and is
good enough for me. I've got a couple of changes to that defconfig in
the Tegra tree for v4.17-rc1, I can add a patch to enable PCI_MSI.

Unless there are any objections.

Thierry
Arnd Bergmann March 14, 2018, 12:06 p.m. UTC | #3
On Wed, Mar 14, 2018 at 12:45 PM, Thierry Reding
<thierry.reding@gmail.com> wrote:
> On Tue, Mar 13, 2018 at 12:52:05PM +0100, Arnd Bergmann wrote:
>> Building the tegra PCIe host driver without MSI results in a link
>> failure:
>>
>> drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
>> drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'
>>
>> This adds the same dependency that everyone else uses.
>>
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>  drivers/pci/host/Kconfig | 1 +
>>  1 file changed, 1 insertion(+)
>
> I'm slightly concerned about the dependency. Not that I doubt its
> correctness, but because it could mean that PCI_TEGRA is not visible in
> the default configuration. The only reason why it is currently visible
> is because PCI_MSI is selected by some symbols that also happen to be
> enabled. However, what if at some point those symbols are disabled or
> removed?
>
> Some architectures make sure that PCI_MSI is enabled by selecting it,
> but that's risky, isn't it, because PCI_MSI is user-visible and could
> therefore easily lead to conflicts.
>
> Enabling PCI_MSI in the arm64 defconfig would solve the issue and is
> good enough for me. I've got a couple of changes to that defconfig in
> the Tegra tree for v4.17-rc1, I can add a patch to enable PCI_MSI.
>
> Unless there are any objections.

I looked at it again and found that this on ARM64, PCI_MSI is always
selected indirectly by ARM_GIC&&PCI, so there is no problem.

The build failure must have been on 32-bit ARM.

       Arnd
Thierry Reding March 14, 2018, 12:13 p.m. UTC | #4
On Wed, Mar 14, 2018 at 01:06:11PM +0100, Arnd Bergmann wrote:
> On Wed, Mar 14, 2018 at 12:45 PM, Thierry Reding
> <thierry.reding@gmail.com> wrote:
> > On Tue, Mar 13, 2018 at 12:52:05PM +0100, Arnd Bergmann wrote:
> >> Building the tegra PCIe host driver without MSI results in a link
> >> failure:
> >>
> >> drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
> >> drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'
> >>
> >> This adds the same dependency that everyone else uses.
> >>
> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> >> ---
> >>  drivers/pci/host/Kconfig | 1 +
> >>  1 file changed, 1 insertion(+)
> >
> > I'm slightly concerned about the dependency. Not that I doubt its
> > correctness, but because it could mean that PCI_TEGRA is not visible in
> > the default configuration. The only reason why it is currently visible
> > is because PCI_MSI is selected by some symbols that also happen to be
> > enabled. However, what if at some point those symbols are disabled or
> > removed?
> >
> > Some architectures make sure that PCI_MSI is enabled by selecting it,
> > but that's risky, isn't it, because PCI_MSI is user-visible and could
> > therefore easily lead to conflicts.
> >
> > Enabling PCI_MSI in the arm64 defconfig would solve the issue and is
> > good enough for me. I've got a couple of changes to that defconfig in
> > the Tegra tree for v4.17-rc1, I can add a patch to enable PCI_MSI.
> >
> > Unless there are any objections.
> 
> I looked at it again and found that this on ARM64, PCI_MSI is always
> selected indirectly by ARM_GIC&&PCI, so there is no problem.
> 
> The build failure must have been on 32-bit ARM.

Okay, I had assumed that ARM_GIC_V2M (which selects PCI_MSI) was user-
visible and hence could be disabled. But it's not, and always enabled on
ARM64. On 32-bit we already explicitly enable PCI_MSI via the default
configurations.

I withdraw my concerns. I see that Lorenzo already applied the patch, so
just for the record:

Acked-by: Thierry Reding <treding@nvidia.com>
Lorenzo Pieralisi March 14, 2018, 6:34 p.m. UTC | #5
On Wed, Mar 14, 2018 at 01:13:14PM +0100, Thierry Reding wrote:
> On Wed, Mar 14, 2018 at 01:06:11PM +0100, Arnd Bergmann wrote:
> > On Wed, Mar 14, 2018 at 12:45 PM, Thierry Reding
> > <thierry.reding@gmail.com> wrote:
> > > On Tue, Mar 13, 2018 at 12:52:05PM +0100, Arnd Bergmann wrote:
> > >> Building the tegra PCIe host driver without MSI results in a link
> > >> failure:
> > >>
> > >> drivers/pci/host/pci-tegra.o:(.data+0x70): undefined reference to `pci_msi_unmask_irq'
> > >> drivers/pci/host/pci-tegra.o:(.data+0x74): undefined reference to `pci_msi_mask_irq'
> > >>
> > >> This adds the same dependency that everyone else uses.
> > >>
> > >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > >> ---
> > >>  drivers/pci/host/Kconfig | 1 +
> > >>  1 file changed, 1 insertion(+)
> > >
> > > I'm slightly concerned about the dependency. Not that I doubt its
> > > correctness, but because it could mean that PCI_TEGRA is not visible in
> > > the default configuration. The only reason why it is currently visible
> > > is because PCI_MSI is selected by some symbols that also happen to be
> > > enabled. However, what if at some point those symbols are disabled or
> > > removed?
> > >
> > > Some architectures make sure that PCI_MSI is enabled by selecting it,
> > > but that's risky, isn't it, because PCI_MSI is user-visible and could
> > > therefore easily lead to conflicts.
> > >
> > > Enabling PCI_MSI in the arm64 defconfig would solve the issue and is
> > > good enough for me. I've got a couple of changes to that defconfig in
> > > the Tegra tree for v4.17-rc1, I can add a patch to enable PCI_MSI.
> > >
> > > Unless there are any objections.
> > 
> > I looked at it again and found that this on ARM64, PCI_MSI is always
> > selected indirectly by ARM_GIC&&PCI, so there is no problem.
> > 
> > The build failure must have been on 32-bit ARM.
> 
> Okay, I had assumed that ARM_GIC_V2M (which selects PCI_MSI) was user-
> visible and hence could be disabled. But it's not, and always enabled on
> ARM64. On 32-bit we already explicitly enable PCI_MSI via the default
> configurations.
> 
> I withdraw my concerns. I see that Lorenzo already applied the patch, so
> just for the record:

Apologies - it fixed an issue and it seemed harmless hence I applied it
straight away, I should have waited for an ACK.

> Acked-by: Thierry Reding <treding@nvidia.com>

Updated - it is important to keep records, that's what tags are for.

Thanks,
Lorenzo
diff mbox

Patch

diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
index 1fcdc890acc7..65b4afb8d11d 100644
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -38,6 +38,7 @@  config PCI_FTPCI100
 config PCI_TEGRA
 	bool "NVIDIA Tegra PCIe controller"
 	depends on ARCH_TEGRA && MMU
+	depends on PCI_MSI_IRQ_DOMAIN
 	help
 	  Say Y here if you want support for the PCIe host controller found
 	  on NVIDIA Tegra SoCs.