All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Ioana Ciornei <ioana.ciornei@nxp.com>
Cc: "Florian Fainelli" <f.fainelli@gmail.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Andrew Lunn" <andrew@lunn.ch>,
	"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 17:01:11 +0100	[thread overview]
Message-ID: <ZNO4RwYzZYUTu1uk@shell.armlinux.org.uk> (raw)
In-Reply-To: <20230809154418.hjkf43ndwfzretiy@LXL00007.wbi.nxp.com>

On Wed, Aug 09, 2023 at 06:44:18PM +0300, Ioana Ciornei wrote:
> On Wed, Aug 09, 2023 at 03:29:17PM +0100, Russell King (Oracle) wrote:
> > On Wed, Aug 09, 2023 at 05:21:55PM +0300, Ioana Ciornei wrote:
> > > That's a perfect summary of the problem that I was trying to fix.
> > > 
> > > The board in question is a LS1021ATSN which has two AR8031 PHYs that
> > > share an interrupt line. In case only one of the PHYs is probed and
> > > there are pending interrupts on the PHY#2 an IRQ storm will happen
> > > since there is no entity to clear the interrupt from PHY#2's registers.
> > > PHY#1's driver will get stuck in .handle_interrupt() indefinitely.
> > 
> > So I have two further questions:
> > 1. Is WoL able to be supported on this hardware?
> 
> I don't know if anyone cares about WoL on the AR8031 PHYs from this
> board.
> 
> Both of the PHYs are used in conjuction with 2 eTSEC controllers - which
> use the driver in drivers/net/ethernet/freescale/gianfar.c.
> 
> The Ethernet controller does have WoL support, which means that WoL could
> still be supported on the board even though we would forbid WoL on the
> AR8031 PHYs.
> 
> > 2. AR8031 has a seperate WOL_INT signal that can be used to wake up the
> >    system. Is this used in the hardware design?
> 
> No, WOL_INT is not connected.

Okay, so we don't need to care about WoL for your hardware setup.

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
@@ -3333,16 +3335,6 @@ static int phy_remove(struct device *dev)
 	return 0;
 }
 
-static void phy_shutdown(struct device *dev)
-{
-	struct phy_device *phydev = to_phy_device(dev);
-
-	if (phydev->state == PHY_READY || !phydev->attached_dev)
-		return;
-
-	phy_disable_interrupts(phydev);
-}
-
 /**
  * phy_driver_register - register a phy_driver with the PHY layer
  * @new_driver: new phy_driver to register
@@ -3376,7 +3368,6 @@ int phy_driver_register(struct phy_driver *new_driver, struct module *owner)
 	new_driver->mdiodrv.driver.bus = &mdio_bus_type;
 	new_driver->mdiodrv.driver.probe = phy_probe;
 	new_driver->mdiodrv.driver.remove = phy_remove;
-	new_driver->mdiodrv.driver.shutdown = phy_shutdown;
 	new_driver->mdiodrv.driver.owner = owner;
 	new_driver->mdiodrv.driver.probe_type = PROBE_FORCE_SYNCHRONOUS;
 
-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2023-08-09 16:01 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) [this message]
2023-08-09 16:21               ` Andrew Lunn
2023-08-09 17:04                 ` Florian Fainelli
2023-08-09 19:15                 ` Russell King (Oracle)
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=ZNO4RwYzZYUTu1uk@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.