netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>
Cc: "Ioana Ciornei" <ioana.ciornei@nxp.com>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Heiner Kallweit" <hkallweit1@gmail.com>,
	"Uwe Kleine-K├Ânig" <u.kleine-koenig@pengutronix.de>,
	"Ioana Ciornei" <ciorneiioana@gmail.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Alexandru Ardelean" <alexandru.ardelean@analog.com>,
	"Andre Edich" <andre.edich@microchip.com>,
	"Antoine Tenart" <atenart@kernel.org>,
	"Baruch Siach" <baruch@tkos.co.il>,
	"Christophe Leroy" <christophe.leroy@c-s.fr>,
	"Divya Koppera" <Divya.Koppera@microchip.com>,
	"Hauke Mehrtens" <hauke@hauke-m.de>,
	"Jerome Brunet" <jbrunet@baylibre.com>,
	"Kavya Sree Kotagiri" <kavyasree.kotagiri@microchip.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Marco Felsch" <m.felsch@pengutronix.de>,
	"Marek Vasut" <marex@denx.de>,
	"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
	"Mathias Kresin" <dev@kresin.me>,
	"Maxim Kochetkov" <fido_max@inbox.ru>,
	"Michael Walle" <michael@walle.cc>,
	"Neil Armstrong" <narmstrong@baylibre.com>,
	"Nisar Sayed" <Nisar.Sayed@microchip.com>,
	"Oleksij Rempel" <o.rempel@pengutronix.de>,
	"Philippe Schenker" <philippe.schenker@toradex.com>,
	"Willy Liu" <willy.liu@realtek.com>,
	"Yuiko Oshino" <yuiko.oshino@microchip.com>
Subject: Re: [PATCH] net: phy: Don't disable irqs on shutdown if WoL is enabled
Date: Wed, 9 Aug 2023 20:15:27 +0100	[thread overview]
Message-ID: <ZNPlzyxYqgpPUn6K@shell.armlinux.org.uk> (raw)
In-Reply-To: <2f717c52-0ae5-4702-ab34-7ce0bffe8c86@lunn.ch>

On Wed, Aug 09, 2023 at 06:21:58PM +0200, Andrew Lunn wrote:
> > Thinking about this, I wonder whether we could solve your issue by
> > disabling interrupts when the PHY is probed, rather than disabling
> > them on shutdown - something like this? (not build tested)
> > 
> > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> > index 3e9909b30938..4d1a37487923 100644
> > --- a/drivers/net/phy/phy_device.c
> > +++ b/drivers/net/phy/phy_device.c
> > @@ -3216,6 +3216,8 @@ static int phy_probe(struct device *dev)
> >  			goto out;
> >  	}
> >  
> > +        phy_disable_interrupts(phydev);
> > +
> >  	/* Start out supporting everything. Eventually,
> >  	 * a controller will attach, and may modify one
> >  	 * or both of these values
> 
> At some point, the interrupt is going to be enabled again. And then
> the WoL interrupt will fire. I think some PHY drivers actually need to
> see that WoL interrupt. e.g. the marvell driver has this comment:
> 
> static int m88e1318_set_wol(struct phy_device *phydev,
>                             struct ethtool_wolinfo *wol)
> {
> ....
>                 /* If WOL event happened once, the LED[2] interrupt pin
>                  * will not be cleared unless we reading the interrupt status
>                  * register. If interrupts are in use, the normal interrupt
>                  * handling will clear the WOL event. Clear the WOL event
>                  * before enabling it if !phy_interrupt_is_valid()
>                  */
> 
> So it seems like just probing the marvell PHY is not enough to clear
> the WoL interrupt.
> 
> Can we be sure that the other PHY has reached a state it can handle
> and clear an interrupt when we come to enable the interrupt? I think
> not, especially in cases like NFS root, where the interface will be
> put into use as soon as it exists, maybe before the other interface
> has probed.

I suppose the question to Ioana would be - are the two AR8031 PHYs on
the same MDIO bus? If they are, then we're safe, because both will be
probed consecutively (because they're using the same driver.)

I know it would be desirable to have a generic solution to this, but
I don't think that is sanely achievable if we have multiple different
PHYs sharing an interrupt line over multiple different MDIO buses
and multiple different PHY drivers.

So, I'm suggesting we try to do a best-effort solution to solve Ioana's
problem so that we can restore Uwe's WoL behaviour without causing
Ioana's issue to regress. It does mean that if someone has a more weird
setup (such as I describe in my paragraph above) it won't work, but
then it also didn't used to work before Ioana's patch.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

  parent reply	other threads:[~2023-08-09 19:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-04  7:17 [PATCH] net: phy: Don't disable irqs on shutdown if WoL is enabled Uwe Kleine-König
2023-08-08 21:53 ` Jakub Kicinski
2023-08-08 21:59   ` Florian Fainelli
2023-08-08 22:56     ` Russell King (Oracle)
2023-08-09 14:21       ` Ioana Ciornei
2023-08-09 14:29         ` Russell King (Oracle)
2023-08-09 15:44           ` Ioana Ciornei
2023-08-09 16:01             ` Russell King (Oracle)
2023-08-09 16:21               ` Andrew Lunn
2023-08-09 17:04                 ` Florian Fainelli
2023-08-09 19:15                 ` Russell King (Oracle) [this message]
2023-08-10 11:01                   ` Ioana Ciornei
2023-08-09 13:58 ` Vladimir Oltean
2023-08-09 15:35   ` Florian Fainelli
2023-08-10  6:32     ` Uwe Kleine-König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZNPlzyxYqgpPUn6K@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Divya.Koppera@microchip.com \
    --cc=Nisar.Sayed@microchip.com \
    --cc=alexandru.ardelean@analog.com \
    --cc=andre.edich@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=atenart@kernel.org \
    --cc=baruch@tkos.co.il \
    --cc=christophe.leroy@c-s.fr \
    --cc=ciorneiioana@gmail.com \
    --cc=dev@kresin.me \
    --cc=f.fainelli@gmail.com \
    --cc=fido_max@inbox.ru \
    --cc=hauke@hauke-m.de \
    --cc=hkallweit1@gmail.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=jbrunet@baylibre.com \
    --cc=kavyasree.kotagiri@microchip.com \
    --cc=kuba@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.felsch@pengutronix.de \
    --cc=marex@denx.de \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=michael@walle.cc \
    --cc=narmstrong@baylibre.com \
    --cc=netdev@vger.kernel.org \
    --cc=o.rempel@pengutronix.de \
    --cc=philippe.schenker@toradex.com \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=willy.liu@realtek.com \
    --cc=yuiko.oshino@microchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).