Announcement

Collapse
No announcement yet.

How to prevent intel I225-V onboard nic from "crashing" on some recent ASUS mobos?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • How to prevent intel I225-V onboard nic from "crashing" on some recent ASUS mobos?

    I would like to hear if somebody already tried something out like this?

    As you might have heard recent ASUS mainboards with the integrated network controller based on intel I225-V have an issue that in combination with power management the device disappears and the driver crashes over time.

    E.g. https://www.reddit.com/r/buildapc/co...ler_i225v_igc/ gives a good overview.
    As a fix from ASUS (We do not support Linux) seems to be very unlikely the known workaround is to deactivate PCI Power Management via the Linux Kernel at all and always keep any PCI device on full power. This is described to be achieved via setting a global Kernel parameter "pcie_port_pm=off".

    However, I do not like the idea to disable the entire feature for any PCI device (which includes PCIe) just because of a single faulty device. I started reading a bit about pci power management (https://docs.kernel.org/power/pci.html). I also found https://wiki.archlinux.org/title/Pow...wer_management with the interesting part:​
    Alternatively, to blacklist devices that are not working with PCI runtime power management and enable it for all other devices:
    /etc/udev/rules.d/pci_pm.rules
    Code:
    # blacklist for pci runtime power management
    SUBSYSTEM=="pci", ATTR{vendor}=="0x1234", ATTR{device}=="0x1234", ATTR{power/control}="on", GOTO="pci_pm_end"
    
    SUBSYSTEM=="pci", ATTR{power/control}="auto"
    LABEL="pci_pm_end"​

    Do I get it right that I would just need to add the file
    /etc/udev/rules.d/pci_pm.rules
    with the content
    Code:
    # blacklist for pci runtime power management
    SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x15f3", ATTR{power/control}="on", GOTO="pci_pm_end"
    
    SUBSYSTEM=="pci", ATTR{power/control}="auto"
    LABEL="pci_pm_end"
    to have the same as "pcie_port_pm=off" but only for the faulty device?

    This should work? Shouldn't it? Does anybody has a better idea to apply the workaround of disabling power management?
    Any other suggestions or comments?​

    ---

    P.S. How to retrieve device and vendor id?

    Find the device via:
    Code:
    lspci
    Look at the details:
    Code:
    $ lspci -m -v -s 0c:00.0
    Device: 0c:00.0
    Class: Ethernet controller
    Vendor: Intel Corporation
    Device: Ethernet Controller I225-V
    SVendor: ASUSTeK Computer Inc.
    SDevice: Ethernet Controller I225-V
    Rev: 03
    ProgIf: 00
    IOMMUGroup: 20
    To retrieve vendor:device id:
    Code:
    $ lspci -n -s 0c:00.0
    0c:00.0 0200: 8086:15f3 (rev 03)
    To check that vendor:device is correct:
    Code:
    $ lspci -d 8086:15f3
    0c:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
Working...
X