我正在x86-64上调试 PCIe 枚举和配置,RC 和端点之间有一个 PCIe 交换机。我想添加printks
Linux 内核来观察CONFIG 0
和CONFIG 1
处理 TLP。
哪些内核源文件负责触发和处理这些 TLP?
我已经检查了驱动程序/pci,但需要指导如何确定代码路径。任何调试提示或相关文档的参考都将不胜感激。
我正在x86-64上调试 PCIe 枚举和配置,RC 和端点之间有一个 PCIe 交换机。我想添加printks
Linux 内核来观察CONFIG 0
和CONFIG 1
处理 TLP。
哪些内核源文件负责触发和处理这些 TLP?
我已经检查了驱动程序/pci,但需要指导如何确定代码路径。任何调试提示或相关文档的参考都将不胜感激。
如果我正确理解了你的问题:
内核文件:PCIe 枚举和配置通常涉及
drivers/pci/
目录中的文件。重要文件:pci.c
用于核心枚举逻辑。setup-bus.c
用于 PCI 总线设置。access.c
用于配置空间访问。TLP 处理:据我所知, TLP
CONFIG 0
与CONFIG 1
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