RE: [PATCH] net: fec: Defer probe if other FEC has deferred MDIO

From: Wei Fang
Date: Thu Feb 09 2023 - 04:17:35 EST


> -----Original Message-----
> From: Sverdlin, Alexander <alexander.sverdlin@xxxxxxxxxxx>
> Sent: 2023年2月9日 15:28
> To: andrew@xxxxxxx
> Cc: Wei Fang <wei.fang@xxxxxxx>; Clark Wang <xiaoning.wang@xxxxxxx>;
> Shenwei Wang <shenwei.wang@xxxxxxx>; netdev@xxxxxxxxxxxxxxx;
> dl-linux-imx <linux-imx@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] net: fec: Defer probe if other FEC has deferred MDIO
>
> Hello Andrew,
>
> On Thu, 2023-02-09 at 01:55 +0100, Andrew Lunn wrote:
> > > -       if ((fep->quirks & FEC_QUIRK_SINGLE_MDIO) && fep->dev_id >
> > > 0) {
> > > +       if (fep->quirks & FEC_QUIRK_SINGLE_MDIO) {
> > >                 /* fec1 uses fec0 mii_bus */
> > >                 if (mii_cnt && fec0_mii_bus) {
> > >                         fep->mii_bus = fec0_mii_bus;
> > >                         mii_cnt++;
> > >                         return 0;
> > >                 }
> > > -               return -ENOENT;
> >
> > Could you not add an else clause here? return -EPROBE_DEFFER?
> >
> > Basically, if fec0 has not probed, deffer the probing of fec1?
>
> we do have a configuration with i.MX8 where we have only fec2 enabled (and
> has mdio node).
> I'm not sure if it was thought of by fec driver developers (it makes a lot of
> non-obvious assumtions), but that's how it works now.
>

Hi Alexander,

This issue seems that the fec2 (without mdio subnode) registers mii_bus first, then
the fec1 (has mdio subnode) use the fec2's mii_bus when fec1 probes again, finally
both fec1 and fec2 can not connect to PHY. Am I right?

If so, I think this issue can't be reproduced on the upstream tree, because the quirks of
i.MX8 on the upstream tree do not set the FEC_QUIRK_SINGLE_MDIO bit. So, the fec1
will registers a mii_bus in your case rather than using the fec2's mii_bus. I'm a bit curious
that have you tried to reproduce this issue base on the upstream tree?