我正在使用基于 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 的真实数字填充,尽管我无法验证这个猜测。
谢谢。