我正在使用 RC 和端点之间的 PCIe 交换机在 x86-64 上调试 PCIe 枚举和配置。我想在 Linux 内核中添加
printks
来观察 CONFIG 0
和 CONFIG 1
TLP 处理。
哪些内核源文件负责触发和处理这些TLP?
我已经查看了 drivers/pci,但需要有关精确定位代码路径的指导。任何调试技巧或相关文档的参考将不胜感激。
如果我正确理解你的问题:
内核文件:PCIe 枚举和配置通常涉及
drivers/pci/
目录中的文件。重要文件:
pci.c
用于核心枚举逻辑。setup-bus.c
用于 PCI 总线设置。access.c
用于配置空间访问。TLP 处理:AFAIK
CONFIG 0
和 CONFIG 1
TLP 与 PCI 配置事务相关,在特定于架构的代码中处理:arch/x86/
。
和调试:
printk()
,例如 pci_scan_bus()
或 pci_read_config_*
。CONFIG_DEBUG_KERNEL
)和 PCI 调试日志。相关文档:https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt,https://www.kernel.org/doc/html/v5.5/ PCI/index.html