【问题标题】:Why do setpci and lspci -xxxx show different data for the same address?为什么 setpci 和 lspci -xxxx 显示相同地址的不同数据?
【发布时间】:2014-05-03 15:46:35
【问题描述】:

在我的 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 调试领域的新手,所以我可能在这里遗漏了一些明显的东西。

提前致谢。

【问题讨论】:

  • 这个问题似乎离题了,因为它应该在superuser.com 上提问
  • 我认为 superuser.com 上的 OT 不会少。如果有用于嵌入式系统开发的 Stackoverflow,我可能会更合适。

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


【解决方案1】:

man setpci

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

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

以超级用户身份尝试

【讨论】:

  • 哇,我不敢相信我错过了!谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 2022-01-26
  • 2018-02-04
  • 2020-10-31
  • 2020-10-02
相关资源
最近更新 更多