1

在我的 x86 Linux 系统上,从 PCI 配置空间中的不同位置读取,setpci与从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.lis02800003的输出与上面的输出一致。但是,输出来自上面setpci -s 00:1f.3 0xf8+0.lffffffff转储,我预计会是08040f87.

有人可以帮忙解释一下这里发生了什么。我是 PCI 调试领域的新手,所以我可能在这里遗漏了一些明显的东西。

提前致谢。

4

1 回答 1

2

人setpci

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

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

以超级用户身份尝试

于 2014-05-04T11:08:15.613 回答