e1000 driver hang

I can't believe this is STILL a problem in 2024!
Even in 2025.
Hang yesterday w. proxmox-kernel-6.8.12-4-pve-signed
Log AFTER reboot.
Bash:
# lspci -nnk
...
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (7) [B]I219-LM [8086:15bb] (rev 10)[/B]
        DeviceName: Onboard - Ethernet
        Subsystem: ASUSTeK Computer Inc. Ethernet Connection (7) I219-LM [1043:8686]
        Kernel driver in use: e1000e
        Kernel modules: e1000e
...

# journalctl -b 0 | grep e1000e
Jan 12 1X:YY:ZZ example kernel: e1000e: Intel(R) PRO/1000 Network Driver
Jan 12 1X:YY:ZZ example kernel: e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 04:d9:f5:bc:35:1a
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 eno1: renamed from eth0
Jan 12 1X:YY:ZZ example kernel: e1000e 0000:00:1f.6 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
# comment added: see hang
Jan 12 22:02:03 example kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
Jan 12 22:02:05 example kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
Jan 12 22:02:07 example kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang:
Jan 12 22:02:09 example kernel: e1000e 0000:00:1f.6 eno1: NETDEV WATCHDOG: CPU: 6: transmit queue 0 timed out 5251 ms
Jan 12 22:02:09 example kernel: e1000e 0000:00:1f.6 eno1: Reset adapter unexpectedly
Jan 12 22:02:13 example kernel: e1000e 0000:00:1f.6 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
proxmox-kernel-6.8.12-5-pve-signed is installed now.

Followed https://forum.proxmox.com/threads/e1000-driver-hang.58284/page-11#post-714192 now.
 
Last edited:
Same here, in 2 of my servers work around seems working, but in one my servers it is not working. Is there any permanent solution. Did anyone tried to upgrade to latest version of proxmox? Is this problem relevant to debian based systems? If yes, unfortunately I have started to think to find another solution to host vms. I have thought buying an external network card, but I am not sure I will meet the same problem or not. Have anyone tried?
 
I'm also experiencing "Detected Hardware Unit Hang" on my X11SCA-F with Linux 6.12 on debian. Disabling TSO with `ethtool -K tso off` should fixed the issue.

Looking into the kernel code, the TARC0 register in i225 BAR0 is probably related to the issue. But it was never documented by Intel.
C:
// https://github.com/torvalds/linux/blob/febbc555cf0fff895546ddb8ba2c9a523692fb55/drivers/net/ethernet/intel/e1000e/netdev.c#L3000
/* SPT and KBL Si errata workaround to avoid data corruption */
if (hw->mac.type == e1000_pch_spt) {
    u32 reg_val;

    reg_val = er32(IOSFPC);    // 0x0F28
    reg_val |= E1000_RCTL_RDMTS_HEX;    // 0x00010000
    ew32(IOSFPC, reg_val);

    reg_val = er32(TARC(0));    // 0x3840
    /* SPT and KBL Si errata workaround to avoid Tx hang.
     * Dropping the number of outstanding requests from
     * 3 to 2 in order to avoid a buffer overrun.
     */
    reg_val &= ~E1000_TARC0_CB_MULTIQ_3_REQ;    // 0x30000000
    reg_val |= E1000_TARC0_CB_MULTIQ_2_REQ;     // 0x20000000
    ew32(TARC(0), reg_val);
}
The code was introduced in https://github.com/torvalds/linux/commit/b10effb92e272051dd1ec0d7be56bf9ca85ab927 , but I was unable to find the definition of the IOSFPC register and TARC register. :(
 
  • Like
Reactions: Licht
Although it is defined as below, I am still facing with this error repeatedly, is there any problem with below definitions?

Code:
auto lo
iface lo inet loopback

auto eno1
iface eno1 inet manual
        post-up ethtool -K eno1 gso off gro off tso off tx off rx off
        dns-nameservers 8.8.8.8 8.8.4.4

auto vmbr0
iface vmbr0 inet static
        address 192.168.20.50/24
        gateway 192.168.20.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        post-up ethtool -K vmbr0 gso off gro off tso off tx off rx off