* [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt
@ 2026-10-09 20:17 Igor Velkov
2026-10-10 15:32 ` Daniel Machon
2026-10-15 13:00 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Igor Velkov @ 2026-10-09 20:17 UTC (permalink / raw)
To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Chevallier
Cc: Maxime Coquelin, Alexandre Torgue, Russell King (Oracle),
Daniel Machon, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, Igor Velkov
Since commit 2e2c878a3141 ("net: stmmac: remove SGMII/RGMII/SMII
interrupt handling") nothing on the RGMII path reads GMAC_RGSMIIIS, so
RGSMIIIS stays pending behind GMAC_INT_MASK from the first link change
on. stmmac_resume() resets the MAC in stmmac_hw_setup(); the reset sets
GMAC_INT_MASK to 0 until dwmac1000_core_init() writes the mask again,
and the pending status storms the line:
dwmac_dma_interrupt: unexpected status 04000000
A register dump at the first message on ODROID-HC4 showed it:
core int_status 00000001 int_mask 00000000 pmt 00000000 rgsmiiis 0000000d
When the resume thread runs on the CPU that takes the MAC interrupt,
the storm starves it: a soft lockup, then a watchdog reset or a hang.
Read GMAC_RGSMIIIS in dwmac1000_irq_status() when the status is not
masked, as the driver did before 2e2c878a3141; the read clears it.
Wake-on-LAN resume from s2idle with the resume thread and the MAC
interrupt on one CPU: Helios64 (dwmac-rk), 7.3-rc6, soft-locked in 3 of
3 resumes without a fix and in 0 of 10 with this patch; it ran with an
out-of-tree dwmac-rk change that keeps the GMAC powered across suspend.
ODROID-HC4 (dwmac-meson8b): 0 of 10 with this patch, 2 of 2 without a
fix on a 7.3-rc5 build. irq_rgmii_n went up by one per resume.
Fixes: 2e2c878a3141 ("net: stmmac: remove SGMII/RGMII/SMII interrupt handling")
Assisted-by: LLM
Signed-off-by: Igor Velkov <iav@iav.lv>
---
v4:
- Clear RGSMIIIS in dwmac1000_irq_status() instead of disabling the
interrupt line around stmmac_hw_setup() in stmmac_resume(), after
Daniel Machon asked about a dwmac1000-only fix.
- Link to v3: https://lore.kernel.org/r/20261007031438.3179966-1-iav@iav.lv
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
index d4ace3924891..66337cfd9824 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
@@ -312,6 +312,12 @@ static int dwmac1000_irq_status(struct stmmac_priv *priv,
if (intr_status & (PCS_ANE_IRQ | PCS_LINK_IRQ))
stmmac_integrated_pcs_irq(priv, intr_status, x);
+ /* Reading RGSMIIIS clears the interrupt the MAC reset unmasks. */
+ if (intr_status & PCS_RGSMIIIS_IRQ) {
+ readl(ioaddr + GMAC_RGSMIIIS);
+ x->irq_rgmii_n++;
+ }
+
return ret;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt
2026-10-09 20:17 [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt Igor Velkov
@ 2026-10-10 15:32 ` Daniel Machon
2026-10-15 13:00 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Daniel Machon @ 2026-10-10 15:32 UTC (permalink / raw)
To: Igor Velkov
Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Chevallier, Maxime Coquelin, Alexandre Torgue,
Russell King (Oracle), netdev, linux-stm32, linux-arm-kernel,
linux-kernel
> Since commit 2e2c878a3141 ("net: stmmac: remove SGMII/RGMII/SMII
> interrupt handling") nothing on the RGMII path reads GMAC_RGSMIIIS, so
> RGSMIIIS stays pending behind GMAC_INT_MASK from the first link change
> on. stmmac_resume() resets the MAC in stmmac_hw_setup(); the reset sets
> GMAC_INT_MASK to 0 until dwmac1000_core_init() writes the mask again,
> and the pending status storms the line:
>
> dwmac_dma_interrupt: unexpected status 04000000
>
> A register dump at the first message on ODROID-HC4 showed it:
>
> core int_status 00000001 int_mask 00000000 pmt 00000000 rgsmiiis 0000000d
>
> When the resume thread runs on the CPU that takes the MAC interrupt,
> the storm starves it: a soft lockup, then a watchdog reset or a hang.
>
> Read GMAC_RGSMIIIS in dwmac1000_irq_status() when the status is not
> masked, as the driver did before 2e2c878a3141; the read clears it.
>
> Wake-on-LAN resume from s2idle with the resume thread and the MAC
> interrupt on one CPU: Helios64 (dwmac-rk), 7.3-rc6, soft-locked in 3 of
> 3 resumes without a fix and in 0 of 10 with this patch; it ran with an
> out-of-tree dwmac-rk change that keeps the GMAC powered across suspend.
> ODROID-HC4 (dwmac-meson8b): 0 of 10 with this patch, 2 of 2 without a
> fix on a 7.3-rc5 build. irq_rgmii_n went up by one per resume.
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt
2026-10-09 20:17 [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt Igor Velkov
2026-10-10 15:32 ` Daniel Machon
@ 2026-10-15 13:00 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-10-15 13:00 UTC (permalink / raw)
To: Igor Velkov
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, maxime.chevallier,
mcoquelin.stm32, alexandre.torgue, rmk+kernel, daniel.machon,
netdev, linux-stm32, linux-arm-kernel, linux-kernel
Hello:
This patch was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:
On Fri, 9 Oct 2026 23:17:09 +0300 you wrote:
> Since commit 2e2c878a3141 ("net: stmmac: remove SGMII/RGMII/SMII
> interrupt handling") nothing on the RGMII path reads GMAC_RGSMIIIS, so
> RGSMIIIS stays pending behind GMAC_INT_MASK from the first link change
> on. stmmac_resume() resets the MAC in stmmac_hw_setup(); the reset sets
> GMAC_INT_MASK to 0 until dwmac1000_core_init() writes the mask again,
> and the pending status storms the line:
>
> [...]
Here is the summary with links:
- [net,v4] net: stmmac: dwmac1000: clear the RGMII status interrupt
https://git.kernel.org/netdev/net/c/aa07285705f8
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-15 13:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-09 20:17 [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt Igor Velkov
2026-10-10 15:32 ` Daniel Machon
2026-10-15 13:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox