Re: [RFC PATCH net-next 1/3] net: phy: don't bind genphy in phy_attach_direct if the specific driver defers probe

From: Vladimir Oltean
Date: Thu Sep 02 2021 - 19:26:13 EST


On Fri, Sep 03, 2021 at 01:02:06AM +0200, Andrew Lunn wrote:
> We should try to keep phylink_create and phylink_destroy symmetrical:
>
> /**
> * phylink_create() - create a phylink instance
> * @config: a pointer to the target &struct phylink_config
> * @fwnode: a pointer to a &struct fwnode_handle describing the network
> * interface
> * @iface: the desired link mode defined by &typedef phy_interface_t
> * @mac_ops: a pointer to a &struct phylink_mac_ops for the MAC.
> *
> * Create a new phylink instance, and parse the link parameters found in @np.
> * This will parse in-band modes, fixed-link or SFP configuration.
> *
> * Note: the rtnl lock must not be held when calling this function.
>
> Having different locking requirements will catch people out.
>
> Interestingly, there is no ASSERT_NO_RTNL(). Maybe we should add such
> a macro.

In this case, the easiest might be to just take a different mutex in
dpaa2 which serializes all places that access the priv->mac references.
I don't know exactly why the SFP bus needs the rtnl_mutex, I've removed
those locks and will see what fails tomorrow, but I don't think dpaa2
has a good enough justification to take the rtnl_mutex just so that it
can connect and disconnect to the MAC freely at runtime.