是否有可能自行获取 PCIe 端点设备上的 PCIe 总线/设备/功能编号?

是否有可能自行获取 PCIe 端点设备上的 PCIe 总线/设备/功能编号?

我正在使用基于 Synopsys PCIe EP IP 的 PCIe EP 设备,并在其上运行 Linux。连接到 Linux 主机时,在主机上我可以从 lspci 和 Linux 驱动程序获取总线/设备/功能编号以定位设备。

我的问题是,有没有办法从 EP 端获取总线/设备/功能编号?我能想到的一种可能性是,由于总线/设备编号是在 BIOS 枚举时确定的,PCIe 规范是否要求将总线/设备信息写回到设备配置空间的某个地方?我正在阅读规范,但它很长,还没有找到任何东西。

一种方法是让主机 PCIe 驱动程序将数字传递给 EP,以便 EP 上的端点功能驱动程序可以读取它。这当然有效,但我想知道有没有办法在不涉及驱动程序传递的情况下获取信息。

谢谢!

答案1

搜索并询问后,这个问题得到了解决:在 PCIe 规范中没有找到任何可以通过标准方式获取此信息的东西,但是 Synopsys PCIe 端点 IP 确实在 APB 从属寄存器中提供了总线/设备号的字段。

它对于 SW 来说是只读的,可以读取正确的总线号。也许它用 RTL 中主机 BIOS 的真实数字填充,尽管我无法验证这个猜测。

谢谢。

相关内容