[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 6 Jun 2022 03:40:49 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Lukas Wunner <lukas@...ner.de>
Cc: "David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Eric Dumazet <edumazet@...gle.com>,
Heiner Kallweit <hkallweit1@...il.com>,
Russell King <linux@...linux.org.uk>,
Marek Szyprowski <m.szyprowski@...sung.com>,
netdev@...r.kernel.org,
Steve Glendinning <steve.glendinning@...well.net>,
UNGLinuxDriver@...rochip.com, Oliver Neukum <oneukum@...e.com>,
Andre Edich <andre.edich@...rochip.com>,
Oleksij Rempel <linux@...pel-privat.de>,
Martyn Welch <martyn.welch@...labora.com>,
Gabriel Hojda <ghojda@...urs.ro>,
Christoph Fritz <chf.fritz@...glemail.com>,
Lino Sanfilippo <LinoSanfilippo@....de>,
Philipp Rosenberger <p.rosenberger@...bus.com>,
Ferry Toth <fntoth@...il.com>,
Krzysztof Kozlowski <krzk@...nel.org>,
linux-samsung-soc@...r.kernel.org
Subject: Re: [PATCH net] net: phy: Don't trigger state machine while in
suspend
> + if (phy_interrupt_is_valid(phydev)) {
> + phydev->irq_suspended = 0;
> + synchronize_irq(phydev->irq);
> +
> + /* Rerun interrupts which were postponed by phy_interrupt()
> + * because they occurred during the system sleep transition.
> + */
> + if (phydev->irq_rerun) {
> + phydev->irq_rerun = 0;
> + enable_irq(phydev->irq);
> + irq_wake_thread(phydev->irq, phydev);
> + }
> + }
As i said in a previous thread, PHY interrupts are generally level,
not edge. So when you call enable_irq(phydev->irq), doesn't it
immediately fire? You need to first call the handler, and then
re-enable the interrupt.
Andrew
Powered by blists - more mailing lists