Re: [PATCH net v4] net: stmmac: dwmac1000: clear the RGMII status interrupt
From: Daniel Machon
Date: Sat Oct 10 2026 - 11:32:52 EST
> 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@xxxxxxxxxxxxx>