前情: 给我的 Ubuntu 服务器加上了建兴 T10 的 SSD,遇到了 AER [12]Timeout 的报错,SSD 的 S.M.A.R.T.中 error log 还一直在增加。一番查找后通过给内核配置 pci=nomsi 的启动参数解决了报错。猜测原因是建兴的固件没有完整实现 MSI 的中断协议导致。
研究:
了解了一下 MSI 是为提高系统中断效率提出的解决方案,禁用 MSI 必然会导致效率降低,查了一下除了 SSD,网卡和 USB 控制器都在用 MSI,为了一个 SSD 禁用了全局的 MSI 有点得不偿失,所以想单独禁用 NVME 的 MSI 中断。找到了 Linux 内核的 [MSI HOWTO] ,根据文章内容 echo 0 > /sys/bus/pci/devices/$pciaddr/msi_bus
可以单独禁用 pci 设备的 MSI 。
问题:
问题来了,问问大家有没有方法可以在 grub 注入参数给内核的时候或者其他 nvme.ko 还没有 load 之前,配置 /sys/bus/pci/devices/$pciaddr/msi_bus
这个参数,在不牺牲其他外设的性能的前提下解决这个恼人的 MSI 中断报错问题。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.