linux/drivers/net
Igor Velkov aa07285705 net: stmmac: dwmac1000: clear the RGMII status interrupt
Since commit 2e2c878a31 ("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: 2e2c878a31 ("net: stmmac: remove SGMII/RGMII/SMII interrupt handling")
Assisted-by: LLM
Signed-off-by: Igor Velkov <iav@iav.lv>
Reviewed-by: Daniel Machon <daniel.machon@microchip.com>
Link: https://patch.msgid.link/20261009201709.1917585-1-iav@iav.lv
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-10-15 14:57:52 +02:00
..
arcnet
bonding bonding: fix the program leak when XDP is replaced 2026-10-02 12:39:21 -07:00
can usb: f81604: fix struct f81604_int_data size mismatch 2026-10-01 17:13:12 +02:00
dsa net: dsa: microchip: fix KSZ8765 fiber detection 2026-10-08 10:48:00 -07:00
ethernet net: stmmac: dwmac1000: clear the RGMII status interrupt 2026-10-15 14:57:52 +02:00
fddi net: fddi: skfp: fix NULL deref when setting the MAC address while down 2026-09-15 10:31:54 +02:00
fjes fjes: cancel force_close_task in fjes_remove() 2026-08-06 09:19:58 -07:00
hyperv hv_netvsc: Remove GPADL teardown special case for old Hyper-V hosts 2026-08-24 00:35:42 +00:00
ieee802154 ieee802154: hwsim: serialize pib updates to fix double-free 2026-09-02 10:26:47 +02:00
ipa net: ipa: balance runtime PM reference on remove error 2026-08-20 12:26:24 -07:00
ipvlan ipvlan: unregister upper devices outside pnodes_lock 2026-08-30 14:30:59 -07:00
mctp net: mctp: i3c: serialize probe with bus removal 2026-09-05 09:39:00 +01:00
mdio net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection 2026-09-23 18:54:19 -07:00
netdevsim netdevsim: update queue NAPI association on queue reset 2026-08-20 12:35:57 -07:00
ovpn ovpn: reject invalid peer VPN addresses 2026-09-21 11:39:13 +02:00
pcs net: pcs: rzn1-miic: Clear MIIC protection state before unprotect sequence 2026-09-29 17:15:37 -07:00
phy net: phy: aquantia: fix system interface type not updated in forced mode 2026-10-01 10:15:19 +02:00
plip
ppp ppp_synctty: ensure a writeable skb header 2026-09-09 18:41:57 -07:00
pse-pd net: pse-pd: realtek-pse-mcu: add UART transport 2026-08-18 15:04:33 +02:00
slip slip: remove slip_hangup() to fix use-after-free in slip_receive_buf() 2026-08-27 12:38:27 -07:00
team net: team: free skb when broadcast has no txable port 2026-10-06 17:20:44 -07:00
thunderbolt Including fixes from Bluetooth, IPSec and Netfilter. 2026-08-27 13:53:43 -07:00
usb net: usb: ax88179_178a: fix rx frame length for non-last packets 2026-10-07 16:43:50 -07:00
vmxnet3 vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets 2026-07-22 13:52:44 -07:00
vxlan vxlan: use one headroom snapshot for neighbour replies 2026-09-23 19:29:26 -07:00
wan net: lapbether: check register_netdevice_notifier() error in lapbeth_init_driver() 2026-08-04 18:49:03 -07:00
wireguard wireguard: noise: reject response consumption after intermediate initiation 2026-10-08 11:43:38 -07:00
wireless Revert "wifi: libertas: reject short monitor TX frames" 2026-10-07 22:48:10 +02:00
wwan net: wwan: t7xx: validate the netif index in t7xx_ccmni_recv_skb() 2026-09-16 18:58:45 -07:00
xen-netback
amt.c amt: send the relay's General Query directly from the receive path 2026-10-01 18:11:09 -07:00
bareudp.c bareudp: set the inner protocol to the protocol of the packet 2026-10-07 19:15:08 -07:00
dummy.c net: change ndo_set_rx_mode_async return type to int 2026-06-09 18:15:29 -07:00
eql.c
geneve.c net: geneve: remove unused geneve_dev_create_fb 2026-08-06 15:09:23 +02:00
gtp.c net: iptunnel: fix stale transport header during tunnel decapsulation 2026-08-28 15:53:46 -07:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c macsec: initialize SecY before registering the netdevice 2026-09-24 15:15:20 +02:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
macvtap.c
Makefile
mdio.c
mhi_net.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
mii.c
net_failover.c net: net_failover: Fix the deadlock in net_failover_slave_name_change() 2026-09-10 15:19:06 +02:00
netconsole.c netconsole: publish the userdata payload with RCU 2026-08-13 15:04:40 +02:00
netkit.c net: change ndo_set_rx_mode_async return type to int 2026-06-09 18:15:29 -07:00
nlmon.c
ntb_netdev.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
pfcp.c pfcp: make sure the SEID is linear before reading it 2026-10-06 18:47:02 -07:00
rionet.c
sungem_phy.c
tap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-13 11:00:14 -07:00
tun_vnet.h tun: no longer rely on RTNL in tun_fill_info() 2026-07-10 17:29:43 +02:00
tun.c net: always dissect GSO packets in __virtio_net_hdr_to_skb() 2026-10-06 15:35:40 -07:00
veth.c veth: fix peer NETDEV_XDP_ACT_NDO_XMIT after GRO is toggled while down 2026-10-08 10:43:13 -07:00
virtio_net.c net: always dissect GSO packets in __virtio_net_hdr_to_skb() 2026-10-06 15:35:40 -07:00
vrf.c vrf: Stop corrupting skb->csum when capturing CHECKSUM_COMPLETE packets 2026-09-23 17:47:10 -07:00
vsockmon.c
xen-netfront.c xen/netfront: don't leak the skb when xennet_fill_frags() fails 2026-10-08 11:00:01 -07:00