为什么setpci和lspci -xxxx显示同一地址的不同数据?

时间:2014-05-03 15:46:36

标签: linux-kernel embedded linux-device-driver device-driver pci-e

在我的x86 Linux系统上,使用setpci从PCI配置空间中的不同位置读取时,与lspci -xxxx的输出相比,某些寄存器的答案似乎完全不同。

例如,我在我的公共汽车上选择一个任意设备并执行lspci -s 00:1f.3 -xxxx并获取:

00: 86 80 22 1e 03 00 80 02 04 00 05 0c 00 00 00 00
10: 04 40 51 d0 00 00 00 00 00 00 00 00 00 00 00 00
20: a1 ef 00 00 00 00 00 00 00 00 00 00 28 10 8b 05

...

e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 87 0f 04 08 00 00 00 00

现在,setpci -s 00:1f.3 0x40+0.l的输出为02800003,与上面的输出一致。但是,setpci -s 00:1f.3 0xf8+0.l的输出为ffffffff,从上面的转储我预计为08040f87

有人可以帮助了解这里发生的事情。我是PCI调试世界的新手,所以我可能会遗漏一些明显的东西。

提前致谢。

1 个答案:

答案 0 :(得分:1)

man setpci

setpci是一个用于查询和配置PCI设备的实用程序。

几乎所有操作都需要root权限,不包括在某些操作系统上读取配置空间的标准头。有关访问权限的详细信息,请参阅lspci(8)。

尝试以超级用户身份