Ошибки PCIe Bus Error: severity=Corrected при выключении в Linux
После обновления Linux, при следующем выключении компьютера на экран повалилась куча одинаковых сообщений об ошибке: "pcieport 0000:00:1c.3: PCIe Bus Error: severity=Corrected, type=Physical Layer". Причём длится это безобразие довольно долго, так что рука тянется принудительно выключить компьютер с кнопки, что я пару раз и проделал, пока не нашёл решения проблемы.
Как я уже сказал выше, выключение или перезагрузка компьютера стала адовой процедурой — лог повторяющихся ошибок бежал по экрану в течении (!) двух минут. Оказалось, что данная проблема постигла практически всех владельцев интеловских процессоров и, по всей видимости, связана с попытками понизить питание на порту PCIe. На тематических Linux-форумах предлагается добавить следующие два параметра при загрузке ядра:
pci = nomsi — отключает использование прерываний MSI;
pci = noaer — отключает расширенный отчёт об ошибках ядра.
Однако, возвращаться к использованию устаревших методов доставки прерываний мне совсем не хотелось — костыли, так себе. Решил пойти другим путём и просто отключить технологию ASPM (Active-State Power Management).
ASPM позволяет управлять энергопотреблением шин PCI Express (PCIe) посредством их перевода в энергосберегающий режим, если устройство не используются. В то же время, активация ASPM приводит к задержке ответа от устройств, так как требуется некоторое время на переключение режимов работы шины.
Поведением ASPM можно управлять, добавив параметр pcie_aspm в загрузчик или внеся изменения в файле /sys/module/pcie_aspm/parameters/policy (pcie_aspm=off отключает ASPM, а pcie_aspm=force принудительно задействует, даже на поддерживающих технологию устройствах). Я подправил загрузчик GRUB:
# открываем файл настроек grub в текстовом редакторе sudo editor /etc/default/grub # добавляем параметр pcie_aspm=off GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off" # сохраняем и обновляем загрузчик sudo update-grub
В моём случае, ошибку выдавал встроенный Wi-Fi адаптер, который в принципе не отличался стабильностью в работе и постоянно отваливался. Отдельно отключить энергосбережение для WiFi поможет продвинутая консольная утилита для управления питанием TLP (/etc/default/tlp):
WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=off
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.