在sysfs中读取设备ROM时遭遇权限拒绝的问题排查
为何在sysfs中读取设备ROM时会出现权限拒绝?
你遇到的权限拒绝问题本质是sysfs里根本没有rom这个文件,哪怕用root也没法往不存在的虚拟节点写东西。结合你的操作细节和PCI sysfs的规则,具体原因拆解如下:
设备已被驱动占用,ROM节点未生成
你的AMD Rembrandt GPU(03:00.0)已经在运行对应驱动(从enable值为1,且重复写入enable提示"Device or resource busy"能看出来)。当显卡驱动(比如amdgpu)接管设备后,系统不会在sysfs下创建rom节点——驱动已经独占了ROM资源,不允许通过sysfs直接访问。误操作不存在的虚拟节点
你执行echo 1 > rom时,bash试图创建一个普通文件,但sysfs是内核维护的虚拟文件系统,不允许用户自行创建节点,因此返回权限拒绝。
另外,你其实已经拿到了想要的固件版本:cat vbios_version输出的113-REMBRANDT-X37就是该GPU的VBIOS版本,完全没必要去读ROM文件。
如果确实需要读取ROM,得先卸载显卡驱动、解除设备与驱动的绑定,这时候sysfs才会生成rom节点,再按文档要求写入"1"启用后读取。但这么做会导致显卡无法正常工作,非必要别折腾。
内容的提问来源于stack exchange,提问作者gcb
相关产品推荐
相关产品推荐

