V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Meano
V2EX  ›  Linux

Linux 内核如何在启动时配置参数到/sys/bus/pci/devices

  •  
  •   Meano ·
    Meano · 2020-06-23 18:28:03 +08:00 · 2415 次点击
    这是一个创建于 1596 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情: 给我的 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 中断报错问题。

    第 1 条附言  ·  2020-06-24 09:10:14 +08:00
    发现一个情况,nomsi 的选项确实不能随便用,设置 nomsi 确实可以让所有驱动不再用 MSI 中断,但有些驱动对非 INTx 中断支持有问题,比如我的主机会在 load 显示驱动时偶尔卡死。。。要去翻源码了,唉。。。
    7 条回复    2020-06-24 12:23:21 +08:00
    yanqiyu
        1
    yanqiyu  
       2020-06-23 18:44:40 +08:00 via Android   ❤️ 1
    想要修改 sysfs 的默认行为?
    sysfs 只是表象...它只是导出驱动的配置(并且我不记得有什么方法可以),你应该去看对应驱动是否能被 cmdline 配置。
    要是不能的话建议直接改代码重新编译
    Meano
        2
    Meano  
    OP
       2020-06-23 19:05:17 +08:00
    @yanqiyu 不行的话只能翻代码了,主要还是穷病,三年前 SSD 最贵的时候图便宜买了建兴,谁知道还有这问题。。。太麻烦的话就卖掉
    pheyx
        3
    pheyx  
       2020-06-23 19:13:38 +08:00   ❤️ 1
    man modprobe.d 看看 install 命令。写一个脚本打包到 initramfs 里。
    qakito
        4
    qakito  
       2020-06-23 21:38:10 +08:00   ❤️ 1
    sysctl.d 里修改该值不行么
    Meano
        5
    Meano  
    OP
       2020-06-24 08:56:24 +08:00
    @pheyx 嗯,这样可以配置,我在 nvme.ko 加载时配置了 msi_bus,只是 nvme.ko 好像只认 nomsi 的 cmdline,还在报错,得编译源码了。。。
    Meano
        6
    Meano  
    OP
       2020-06-24 08:58:38 +08:00
    @qakito 好像也可以,只是配置时效不确定,应该在 nvme 驱动加载前配置,不然只要 load ssd log 就会加一个 error...
    qakito
        7
    qakito  
       2020-06-24 12:23:21 +08:00
    systemd-sysctl.service 是在 systemd-modules-load.service 之后运行的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3363 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:48 · PVG 18:48 · LAX 02:48 · JFK 05:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.