Message ID | 20180313115218.2246372-1-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
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 >
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
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
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>
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 --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.
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(+)