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:
Do I get it right that I would just need to add the file
/etc/udev/rules.d/pci_pm.rules
with the content
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:
Look at the details:
To retrieve vendor:device id:
To check that vendor:device is correct:
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
/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"
/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"
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
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
Code:
$ lspci -n -s 0c:00.0 0c:00.0 0200: 8086:15f3 (rev 03)
Code:
$ lspci -d 8086:15f3 0c:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)