Updated bug description to canonical SRU template. Confirmed that the
issue remains reproducible in latest upstream Linux master (v7.3-rc4)
and Ubuntu 24.04 LTS (Noble linux 6.8). The attached patch applies
cleanly and resolves the RTNL assertion on resume without re-introducing
the RPM deadlock.
** Description changed:
- Using an i350-T2 card with /etc/network/interfaces with a bond and using
- hardware-dma-ring-rx or hardware-dma-ring-tx I sometimes see an
- assertion in dmesg
+ [ Impact ]
+
+ On systems using Intel igb network adapters (e.g. Intel I350-T2, 82575,
+ 82576, I210, I211) running the 6.8 kernel series, runtime power
+ management (RPM) or link state transitions triggering
+ igb_runtime_resume() cause an RTNL assertion failure and a kernel stack
+ trace in dmesg:
+
+ RTNL: assertion failed at net/core/dev.c (2907)
+ WARNING: CPU: 2 PID: 34 at net/core/dev.c:2907
netif_set_real_num_tx_queues+0x1ef/0x220
+
+ This is immediately followed by a matching assertion warning in
+ netif_set_real_num_rx_queues().
+
+ While the network interface resumes, the RTNL assertion pollutes kernel
+ logs, taints the kernel, triggers automated crash telemetry, and
+ indicates incorrect locking assumptions in core network stack functions
+ during runtime resume, especially under link aggregation (bonding).
+
+ [ Fix ]
+
+ Commit ac8c58f5b535 ("igb: fix deadlock caused by taking RTNL in RPM
+ resume path") dropped rtnl_lock() and rtnl_unlock() from
+ igb_runtime_resume() to resolve deadlocks with runtime PM.
+
+ However, __igb_open(netdev, resuming) continued to call
+ netif_set_real_num_tx_queues() and netif_set_real_num_rx_queues()
+ unconditionally. Both functions contain ASSERT_RTNL(), which fires
+ whenever RTNL lock is not held.
+
+ When resuming (resuming == true), the netdevice is already registered
+ and queue allocations have already been committed during initial device
+ initialization. Re-registering queue counts with the network core across
+ suspend/resume is unnecessary.
+
+ The fix wraps both queue configuration calls in if (!resuming). This
+ skips the redundant queue re-registration during resume, avoiding the
+ ASSERT_RTNL() warnings entirely without re-introducing the RPM deadlock.
+
+ [ Test Plan ]
+
+ 1. Setup: A system with an Intel igb adapter (e.g. Intel I350-T2) running the
6.8 kernel (Ubuntu 24.04 Noble or 22.04 Jammy HWE).
+ 2. Enable PCI Runtime Power Management on the adapter:
+ echo auto > /sys/bus/pci/devices/<pci-id>/power/control
+ 3. Trigger a link state transition or RPM resume cycle by cycling the
Ethernet cable or restarting link aggregation (bond).
+ 4. Check dmesg:
+ - Without patch: Kernel outputs "RTNL: assertion failed at net/core/dev.c"
and a call trace from netif_set_real_num_tx_queues.
+ - With patch: Interface resumes cleanly with 0 assertion failures or
warnings in dmesg. Network throughput, ring buffers, and queue counts (ethtool
-l <iface>) operate as expected.
+
+ [ Where problems could occur ]
+
+ The change is confined to drivers/net/ethernet/intel/igb/igb_main.c
+ inside __igb_open().
+
+ Queue counts are established when the interface is brought up
+ (!resuming). In the igb driver, queue parameters are fixed and do not
+ change dynamically across suspend/resume cycles.
+
+ If an interface were to resume with altered queue configurations,
+ skipping netif_set_real_num_{tx,rx}_queues could leave queue counts
+ unrefreshed; however, igb does not alter queue topology across RPM
+ resume. Therefore, risk is very low.
+
+ [ Other Info ]
+
+ - Upstream status: Issue confirmed present in upstream Linux kernel
(torvalds/linux master v7.3-rc4 drivers/net/ethernet/intel/igb/igb_main.c:4183
and net/core/dev.c:3248) and in Ubuntu Noble linux 6.8 / Jammy linux-hwe-6.8.
Upstream patch series for intel-wired-lan / netdev prepared.
+ - Root cause: Unhandled regression from commit ac8c58f5b535 ("igb: fix
deadlock caused by taking RTNL in RPM resume path").
+ - Technical review: Discussed with Jay Vosburgh (Linux kernel bonding
maintainer / Canonical SEG) in bug comment #4.
+ - Target releases: Ubuntu 24.04 LTS (Noble linux 6.8), Ubuntu 22.04 LTS
(Jammy linux-hwe-6.8).
+ - Patch: Attached to bug as lp-2083151-igb-resume-rtnl.patch (type: patch).
+
+ --- [ Original Report ]
+ Using an i350-T2 card with /etc/network/interfaces with a bond and using
hardware-dma-ring-rx or hardware-dma-ring-tx I sometimes see an assertion in
dmesg
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: linux-image-lowlatency (not installed)
ProcVersionSignature: Ubuntu 6.8.0-45.45.1~22.04.1-lowlatency 6.8.12
Uname: Linux 6.8.0-45-lowlatency x86_64
NonfreeKernelModules: zfs
ApportVersion: 2.20.11-0ubuntu82.6
Architecture: amd64
CasperMD5CheckResult: unknown
Date: Sun Sep 29 14:38:25 2024
SourcePackage: linux-meta-lowlatency
UpgradeStatus: Upgraded to jammy on 2024-01-20 (252 days ago)
** Tags added: assertion igb net noble
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2083151
Title:
igb assertion changing rx/tx queues
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-meta-lowlatency/+bug/2083151/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs