Re: [PATCH] PCI: cadence-plat: Fix host/endpoint dependencies
Randy Dunlap <[email protected]> Wed, 5 Aug 2026 10:29:33 -0700
| Newsgroups | org.kernel.vger.linux-pci,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 8/5/26 3:50 AM, Aksh Garg wrote:
> The cadence-plat 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 one of the mode is build as built-in and another as loadable module,
> we end up with a situation where the built-in pcie-cadence-plat driver
> tries to call the modular host or endpoint driver, which causes a link
> failure:
>
> ld: error: undefined symbol: cdns_pcie_ep_setup
> >>> referenced by pcie-cadence-plat.c
> >>> drivers/pci/controller/cadence/pcie-cadence-plat.o:(cdns_plat_pcie_probe) in archive vmlinux.a
>
> ld: error: undefined symbol: cdns_pcie_host_setup
> >>> referenced by pcie-cadence-plat.c
> >>> drivers/pci/controller/cadence/pcie-cadence-plat.o:(cdns_plat_pcie_probe) in archive vmlinux.a
>
> Fix this by moving the 'select' of PCIE_CADENCE_HOST and PCIE_CADENCE_EP
> from the individual PLAT_HOST/PLAT_EP symbols into the common PCIE_CADENCE_PLAT
> symbol, conditioned on which backends (modes) are enabled.
>
> Fixes: 611627a4e5e4 ("PCI: cadence: Add module support for platform controller driver")
> Reported-by: Randy Dunlap <[email protected]>
> Closes: https://lore.kernel.org/linux-next/[email protected]/
> Signed-off-by: Aksh Garg <[email protected]>
Tested-by: Randy Dunlap <[email protected]>
Acked-by: Randy Dunlap <[email protected]>
Thanks.
> ---
> drivers/pci/controller/cadence/Kconfig | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/cadence/Kconfig b/drivers/pci/controller/cadence/Kconfig
> index 9e651d545973..fd704dec47dd 100644
> --- a/drivers/pci/controller/cadence/Kconfig
> +++ b/drivers/pci/controller/cadence/Kconfig
> @@ -20,11 +20,12 @@ config PCIE_CADENCE_EP
>
> config PCIE_CADENCE_PLAT
> tristate
> + select PCIE_CADENCE_HOST if PCIE_CADENCE_PLAT_HOST != n
> + select PCIE_CADENCE_EP if PCIE_CADENCE_PLAT_EP != n
>
> config PCIE_CADENCE_PLAT_HOST
> tristate "Cadence platform PCIe controller (host mode)"
> depends on OF
> - select PCIE_CADENCE_HOST
> select PCIE_CADENCE_PLAT
> help
> Say Y here if you want to support the Cadence PCIe platform controller in
> @@ -35,7 +36,6 @@ config PCIE_CADENCE_PLAT_EP
> tristate "Cadence platform PCIe controller (endpoint mode)"
> depends on OF
> depends on PCI_ENDPOINT
> - select PCIE_CADENCE_EP
> select PCIE_CADENCE_PLAT
> help
> Say Y here if you want to support the Cadence PCIe platform controller in
--
~Randy