Subject: Re: [PATCH] net: ethernet: Add missing depends on MDIO_DEVRES

From: Simon Horman <[email-masked]>
Date: Mon, 10 Apr 2023 11:07:58 +0200

On Sun, Apr 09, 2023 at 05:02:04PM +0200, Andrew Lunn wrote:
> A number of MDIO drivers make use of devm_mdiobus_alloc_size(). This
> is only available when CONFIG_MDIO_DEVRES is enabled. Add missing
> depends or selects, depending on if there are circular dependencies or
> not. This avoids linker errors, especially for randconfig builds.
> 
> Signed-off-by: Andrew Lunn <[email-masked]>
> ---
>  drivers/net/ethernet/freescale/Kconfig       | 1 +
>  drivers/net/ethernet/freescale/enetc/Kconfig | 1 +
>  drivers/net/ethernet/marvell/Kconfig         | 1 +
>  drivers/net/ethernet/qualcomm/Kconfig        | 1 +
>  drivers/net/mdio/Kconfig                     | 3 +++
>  5 files changed, 7 insertions(+)
> 
> diff --git a/drivers/net/ethernet/freescale/Kconfig b/drivers/net/ethernet/freescale/Kconfig
> index f1e80d6996ef..1c78f66a89da 100644
> --- a/drivers/net/ethernet/freescale/Kconfig
> +++ b/drivers/net/ethernet/freescale/Kconfig
> @@ -71,6 +71,7 @@ config FSL_XGMAC_MDIO
>  	tristate "Freescale XGMAC MDIO"
>  	select PHYLIB
>  	depends on OF
> +	select MDIO_DEVRES
>  	select OF_MDIO
>  	help
>  	  This driver supports the MDIO bus on the Fman 10G Ethernet MACs, and

Perhaps this is a good idea, but I'd like to mention that I don't think
it is strictly necessary as:

1. FSL_XGMAC_MDIO selects PHYLIB.
2. And PHYLIB selects MDIO_DEVRES.

Likewise for FSL_ENETC, MV643XX_ETH, QCOM_EMAC.

Is there some combination of N/y/m that defeats my logic here?
I feel like I am missing something obvious.

> diff --git a/drivers/net/ethernet/freescale/enetc/Kconfig b/drivers/net/ethernet/freescale/enetc/Kconfig
> index 9bc099cf3cb1..4d75e6807e92 100644
> --- a/drivers/net/ethernet/freescale/enetc/Kconfig
> +++ b/drivers/net/ethernet/freescale/enetc/Kconfig
> @@ -10,6 +10,7 @@ config FSL_ENETC_CORE
>  config FSL_ENETC
>  	tristate "ENETC PF driver"
>  	depends on PCI_MSI
> +	select MDIO_DEVRES
>  	select FSL_ENETC_CORE
>  	select FSL_ENETC_IERB
>  	select FSL_ENETC_MDIO
> diff --git a/drivers/net/ethernet/marvell/Kconfig b/drivers/net/ethernet/marvell/Kconfig
> index f58a1c0144ba..884d64114bff 100644
> --- a/drivers/net/ethernet/marvell/Kconfig
> +++ b/drivers/net/ethernet/marvell/Kconfig
> @@ -34,6 +34,7 @@ config MV643XX_ETH
>  config MVMDIO
>  	tristate "Marvell MDIO interface support"
>  	depends on HAS_IOMEM
> +	select MDIO_DEVRES
>  	select PHYLIB
>  	help
>  	  This driver supports the MDIO interface found in the network
> diff --git a/drivers/net/ethernet/qualcomm/Kconfig b/drivers/net/ethernet/qualcomm/Kconfig
> index a4434eb38950..9210ff360fdc 100644
> --- a/drivers/net/ethernet/qualcomm/Kconfig
> +++ b/drivers/net/ethernet/qualcomm/Kconfig
> @@ -52,6 +52,7 @@ config QCOM_EMAC
>  	depends on HAS_DMA && HAS_IOMEM
>  	select CRC32
>  	select PHYLIB
> +	select MDIO_DEVRES
>  	help
>  	  This driver supports the Qualcomm Technologies, Inc. Gigabit
>  	  Ethernet Media Access Controller (EMAC). The controller
> diff --git a/drivers/net/mdio/Kconfig b/drivers/net/mdio/Kconfig
> index 90309980686e..9ff2e6f22f3f 100644
> --- a/drivers/net/mdio/Kconfig
> +++ b/drivers/net/mdio/Kconfig
> @@ -65,6 +65,7 @@ config MDIO_ASPEED
>  	tristate "ASPEED MDIO bus controller"
>  	depends on ARCH_ASPEED || COMPILE_TEST
>  	depends on OF_MDIO && HAS_IOMEM
> +	depends on MDIO_DEVRES
>  	help
>  	  This module provides a driver for the independent MDIO bus
>  	  controllers found in the ASPEED AST2600 SoC. This is a driver for the

Again, I'm not sure if this is necessary:

1. MDIO_ASPEED depends on OF_MDIO
2. OF_MDIO depends on PHYLIB
3. PHYLIB selects MDIO_DEVRES

Likewise for MDIO_IPQ4019 and MDIO_IPQ8064.

> @@ -170,6 +171,7 @@ config MDIO_IPQ4019
>  	tristate "Qualcomm IPQ4019 MDIO interface support"
>  	depends on HAS_IOMEM && OF_MDIO
>  	depends on COMMON_CLK
> +	depends on MDIO_DEVRES
>  	help
>  	  This driver supports the MDIO interface found in Qualcomm
>  	  IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
> @@ -178,6 +180,7 @@ config MDIO_IPQ8064
>  	tristate "Qualcomm IPQ8064 MDIO interface support"
>  	depends on HAS_IOMEM && OF_MDIO
>  	depends on MFD_SYSCON
> +	depends on MDIO_DEVRES
>  	help
>  	  This driver supports the MDIO interface found in the network
>  	  interface units of the IPQ8064 SoC
> -- 
> 2.40.0
>