Message ID | 20250423162523.2060405-1-arnd@kernel.org |
---|---|
State | New |
Headers | show |
Series | pci: j721e: fix host/endpoint dependencies | expand |
On Wed, Apr 23, 2025 at 06:25:16PM +0200, Arnd Bergmann wrote: Hello Arnd, Thank you for the Fix. > From: Arnd Bergmann <arnd@arndb.de> > > The j721e driver has a single platform driver that can be built-in or > a loadable module, but it calls two separate backend drivers depending > on whether it is a host or endpoint. > > If the two modes are not the same, we can end up with a situation where > the built-in pci-j721e driver tries to call the modular host or endpoint > driver, which causes a link failure: > > ld.lld-21: error: undefined symbol: cdns_pcie_ep_setup > >>> referenced by pci-j721e.c > >>> drivers/pci/controller/cadence/pci-j721e.o:(j721e_pcie_probe) in archive vmlinux.a > > ld.lld-21: error: undefined symbol: cdns_pcie_host_setup > >>> referenced by pci-j721e.c > >>> drivers/pci/controller/cadence/pci-j721e.o:(j721e_pcie_probe) in archive vmlinux.a > > Rework the dependencies so that the 'select' is done by the common > Kconfig symbol, based on which of the two are enabled. Effectively > this means that having one built-in makes the other either built-in > or disabled, but all configurations will now build. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com> Regards, Siddharth.
On Wed, 23 Apr 2025 18:25:16 +0200, Arnd Bergmann wrote: > The j721e driver has a single platform driver that can be built-in or > a loadable module, but it calls two separate backend drivers depending > on whether it is a host or endpoint. > > If the two modes are not the same, we can end up with a situation where > the built-in pci-j721e driver tries to call the modular host or endpoint > driver, which causes a link failure: > > [...] Applied, thanks! [1/1] pci: j721e: fix host/endpoint dependencies commit: 10aae64c2fb5148409cc9beba7f849a79fe82f17 Best regards,
diff --git a/drivers/pci/controller/cadence/Kconfig b/drivers/pci/controller/cadence/Kconfig index 72d7d264d6c3..666e16b6367f 100644 --- a/drivers/pci/controller/cadence/Kconfig +++ b/drivers/pci/controller/cadence/Kconfig @@ -44,12 +44,13 @@ config PCIE_CADENCE_PLAT_EP config PCI_J721E tristate + select PCIE_CADENCE_HOST if PCI_J721E_HOST != n + select PCIE_CADENCE_EP if PCI_J721E_EP != n config PCI_J721E_HOST tristate "TI J721E PCIe controller (host mode)" depends on ARCH_K3 || COMPILE_TEST depends on OF - select PCIE_CADENCE_HOST select PCI_J721E help Say Y here if you want to support the TI J721E PCIe platform @@ -61,7 +62,6 @@ config PCI_J721E_EP depends on ARCH_K3 || COMPILE_TEST depends on OF depends on PCI_ENDPOINT - select PCIE_CADENCE_EP select PCI_J721E help Say Y here if you want to support the TI J721E PCIe platform diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c index b87bc26bbf06..f0051805f9e9 100644 --- a/drivers/pci/controller/cadence/pci-j721e.c +++ b/drivers/pci/controller/cadence/pci-j721e.c @@ -475,7 +475,7 @@ static int j721e_pcie_probe(struct platform_device *pdev) switch (mode) { case PCI_MODE_RC: - if (!IS_ENABLED(CONFIG_PCIE_CADENCE_HOST)) + if (!IS_ENABLED(CONFIG_PCI_J721E_HOST)) return -ENODEV; bridge = devm_pci_alloc_host_bridge(dev, sizeof(*rc)); @@ -494,7 +494,7 @@ static int j721e_pcie_probe(struct platform_device *pdev) pcie->cdns_pcie = cdns_pcie; break; case PCI_MODE_EP: - if (!IS_ENABLED(CONFIG_PCIE_CADENCE_EP)) + if (!IS_ENABLED(CONFIG_PCI_J721E_EP)) return -ENODEV; ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL);