Re: [PATCH net] net: emac: release DT PHY resources on teardown

From: Andrew Lunn

Date: Tue Oct 20 2026 - 21:05:46 EST


On Tue, Oct 20, 2026 at 03:30:02PM -0700, Rosen Penev wrote:
> Disconnect PHYLIB PHYs and deregister fixed PHYs during both probe
> unwind and driver removal. Without this cleanup, unbinding a DT-based
> EMAC can leave its PHY attached to the freed netdev, while fixed-link
> instances retain their registered fixed PHY.

This driver is quite convoluted with its PHY handling.

Please split this into two, phy_disconnect() and
of_phy_deregister_fixed_link() and add better commit messages.

if ((dev->phy_address == 0xffffffff && dev->phy_map == 0xffffffff) ||
of_phy_is_fixed_link(np)) {

/* PHY-less configuration. */
dev->phy.address = -1;
...
if (of_phy_is_fixed_link(np)) {
int res = emac_dt_mdio_probe(dev);

if (res)
return res;

res = of_phy_register_fixed_link(np);

The logic here is more complex than

> + if (of_phy_is_fixed_link(np))
> + of_phy_deregister_fixed_link(np);

So you need to explain in the commit message why it is correct.

> +static void emac_cleanup_phy(struct emac_instance *dev)
> +{
> + struct device_node *np = dev->ofdev->dev.of_node;
> +
> + if (dev->ndev->phydev && dev->phy.address >= 0)
> + phy_disconnect(dev->ndev->phydev);

It is also not clear this is correct, since a fixed-link should be
connected to, yet a fixed link has dev->phy.address == -1?

Andrew