devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is missing
@ 2018-01-05  9:36 Madalin Bucur
       [not found] ` <1515144974-31377-1-git-send-email-madalin.bucur-3arQi8VN3Tc@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Madalin Bucur @ 2018-01-05  9:36 UTC (permalink / raw)
  To: andrew-g2DYL2Zd6BY, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: geert+renesas-gXvu3+zWzMSzQB+pC5nmwQ,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	frowand.list-Re5JQEeQqe8AvxtiuMwx3w,
	netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Madalin Bucur

If one of the child devices is missing the of_mdiobus_register_phy()
call will return -ENODEV. When a missing device is encountered the
registration of the remaining PHYs is stopped and the MDIO bus will
fail to register. Propagate all errors except ENODEV to avoid it.

Signed-off-by: Madalin Bucur <madalin.bucur-3arQi8VN3Tc@public.gmane.org>
---
 drivers/of/of_mdio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index 3481e69..93d41275 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -231,7 +231,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
 			rc = of_mdiobus_register_phy(mdio, child, addr);
 		else
 			rc = of_mdiobus_register_device(mdio, child, addr);
-		if (rc)
+		if (rc && rc != -ENODEV)
 			goto unregister;
 	}
 
@@ -255,7 +255,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
 
 			if (of_mdiobus_child_is_phy(child)) {
 				rc = of_mdiobus_register_phy(mdio, child, addr);
-				if (rc)
+				if (rc && rc != -ENODEV)
 					goto unregister;
 			}
 		}
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is missing
       [not found] ` <1515144974-31377-1-git-send-email-madalin.bucur-3arQi8VN3Tc@public.gmane.org>
@ 2018-01-05 15:12   ` Andrew Lunn
  2018-01-08  8:48     ` Madalin-cristian Bucur
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Lunn @ 2018-01-05 15:12 UTC (permalink / raw)
  To: Madalin Bucur
  Cc: f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, davem-fT/PcQaiUtIeIZ0/mPfg9Q,
	geert+renesas-gXvu3+zWzMSzQB+pC5nmwQ,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	frowand.list-Re5JQEeQqe8AvxtiuMwx3w,
	netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

On Fri, Jan 05, 2018 at 11:36:14AM +0200, Madalin Bucur wrote:
> If one of the child devices is missing the of_mdiobus_register_phy()
> call will return -ENODEV. When a missing device is encountered the
> registration of the remaining PHYs is stopped and the MDIO bus will
> fail to register. Propagate all errors except ENODEV to avoid it.

Hi Madalin

This is is not clear cut. If the PHY is in device tree, the PHY should
exist. So returning ENODEV is justified. The device tree blob is
broken. But i can also see the value for continuing. There is a chance
some of your other interfaces come up, allowing you to get the correct
device tree blob for the hardware.

Please add

dev_err(&mdio->dev, "MDIO device at address %d is missing.\n");

	Andrew

> 
> Signed-off-by: Madalin Bucur <madalin.bucur-3arQi8VN3Tc@public.gmane.org>
> ---
>  drivers/of/of_mdio.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
> index 3481e69..93d41275 100644
> --- a/drivers/of/of_mdio.c
> +++ b/drivers/of/of_mdio.c
> @@ -231,7 +231,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
>  			rc = of_mdiobus_register_phy(mdio, child, addr);
>  		else
>  			rc = of_mdiobus_register_device(mdio, child, addr);
> -		if (rc)
> +		if (rc && rc != -ENODEV)
>  			goto unregister;
>  	}
>  
> @@ -255,7 +255,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
>  
>  			if (of_mdiobus_child_is_phy(child)) {
>  				rc = of_mdiobus_register_phy(mdio, child, addr);
> -				if (rc)
> +				if (rc && rc != -ENODEV)
>  					goto unregister;
>  			}
>  		}
> -- 
> 2.1.0
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is missing
  2018-01-05 15:12   ` Andrew Lunn
@ 2018-01-08  8:48     ` Madalin-cristian Bucur
  0 siblings, 0 replies; 3+ messages in thread
From: Madalin-cristian Bucur @ 2018-01-08  8:48 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: f.fainelli, davem, geert+renesas, robh+dt, frowand.list, netdev,
	devicetree, linux-kernel

> -----Original Message-----
> From: Andrew Lunn [mailto:andrew@lunn.ch]
> Sent: Friday, January 05, 2018 5:13 PM
> To: Madalin-cristian Bucur <madalin.bucur@nxp.com>
> Subject: Re: [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is
> missing
> 
> On Fri, Jan 05, 2018 at 11:36:14AM +0200, Madalin Bucur wrote:
> > If one of the child devices is missing the of_mdiobus_register_phy()
> > call will return -ENODEV. When a missing device is encountered the
> > registration of the remaining PHYs is stopped and the MDIO bus will
> > fail to register. Propagate all errors except ENODEV to avoid it.
> 
> Hi Madalin
> 
> This is is not clear cut. If the PHY is in device tree, the PHY should
> exist. So returning ENODEV is justified. The device tree blob is
> broken. But i can also see the value for continuing. There is a chance
> some of your other interfaces come up, allowing you to get the correct
> device tree blob for the hardware.
> 
> Please add
> 
> dev_err(&mdio->dev, "MDIO device at address %d is missing.\n");
> 
> 	Andrew

This appears on boards that include in the device tree the description
for the PHYs found on an optional riser card. When the riser card is
removed, this issue is triggered. I'll send a v2 with the dev_err()
included.

Thanks,
Madalin

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-01-08  8:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-05  9:36 [PATCH net] of_mdio: avoid MDIO bus removal when a PHY is missing Madalin Bucur
     [not found] ` <1515144974-31377-1-git-send-email-madalin.bucur-3arQi8VN3Tc@public.gmane.org>
2018-01-05 15:12   ` Andrew Lunn
2018-01-08  8:48     ` Madalin-cristian Bucur

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).