首先,这个问题与为什么 journalctl 报告“PCIe 总线错误”BadTLP 和 BadDLLP?不是重复的,因为我没有问是什么导致了这个内核警告,而是直接问如何解决它,或者做一些变通的方法。
大约连续一个小时的时间里,我写入并读取了我新连接的 USB 磁盘设备 Crucial P3 PCIe 3.0 x4 NVMe M.2 2280 SSD,型号为 CT4000P3SSD8,容量为 4TB,我将其放入AXAGON EEM2-SG2 SuperSpeed+ USB-C M.2 磁盘外壳中,并将其连接到我的旧款 Dell Inspiron 15 Gaming 7577 笔记本电脑的Thunderbolt 3 USB-C 接口。
我立即注意到了这样的BadDLLP 警告(可纠正的 PCIe 总线错误)(时间被简短地删除了):
kernel: pcieport 0000:00:1c.0: AER: Correctable error message received from 0000:02:00.0
kernel: pcieport 0000:02:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Receiver ID)
kernel: pcieport 0000:02:00.0: device [8086:15da] error status/mask=00000080/00002000
kernel: pcieport 0000:02:00.0: [ 7] BadDLLP
在大约一个小时内,内核生成了近 300,000 个此类警告/可纠正错误:
# journalctl --boot -1 --no-pager --no-hostname | grep BadDLLP | wc --lines
292727
我可以采取哪些相对安全的措施来减轻这些警告/可纠正的错误?
操作系统:Linux Mint 22(wilma),内核版本为 6.8.0-51-generic。
(以前,这个答案曾经建议
pcie_ecrc=off
,但进一步检查后发现它似乎不仅仅是禁用Linux 内核中的错误报告,而且它实际上告诉硬件忽略错误,这可能会导致问题。)pcie_aspm=off
禁用大部分 PCIe 电源管理。在台式机上您可能不关心这一点,但在笔记本电脑上,这可能很重要,不仅要限制功耗,还要将发热量保持在可控的范围内。出于显而易见的原因,笔记本电脑上的冷却解决方案往往不如台式机和服务器那么有效。pci=noaer
可能是更好的选择,因为它只关闭错误报告部分。硬件仍将遵循系统固件(BIOS 或 UEFI)设置的默认错误更正策略,但Correctable PCIe Bus Error
不再生成消息。如果有
pcie_aspm=off
帮助,则可能意味着某些硬件组件没有完全遵守 PCIe 电源管理状态,并且正在生成有关 PCIe 链路上随机干扰的错误消息,而该链路的另一个端点当前已关闭。在这种情况下,错误报告可能是合适的,以便可以正确修复根本原因。错误消息中提到的设备
8086:15da
似乎是 Intel JHL6340 Thunderbolt 3 桥接器,因此也许可以在 Thunderbolt 驱动程序中采取一些措施来消除或限制“可纠正的 PCIe 错误”消息的洪流。错误信息也可能表明 Thunderbolt 电缆有问题,或者连接器脏污或损坏。但我想你已经检查过了。
通过 GRUB内核参数(RedHat 文档链接)全局禁用ASPM(主动状态电源管理) (维基百科链接)似乎可以解决该问题。
pcie_aspm=off
内核文档
pcie_aspm
(链接)摘录:免责声明:我怀疑此选项会禁用所有PCIe 省电功能,因此我发布它只是直到我了解更多选项,例如是否可以严格关闭仅针对此设备的省电功能...