【发布时间】:2019-05-04 11:28:25
【问题描述】:
我正致力于在 QEMU 中实现一个简单的 PCI 设备及其内核驱动程序,但在处理来自设备端的 pci_read/write_config_* 函数调用时遇到了一些麻烦。
与内存映射条上的简单 rw 操作不同,其中 MemoryRegionOps 回调接收驱动程序使用的确切偏移量,作为 PCIDevice 结构中的成员实现的 config_read/write 回调接收经过我的一些操作/映射的地址很难理解。
在 QEMU 源代码中遵循直到 pci_config_host_read/write 的代码路径,以及在内核端的 pci_read/write_config_* 函数相同,都没有提供任何明确的答案。
谁能帮我理解在调用 pci config rw 函数时如何提取驱动程序使用的配置偏移量?
【问题讨论】:
-
为什么要知道驱动使用的地址?您所需要的只是设备配置空间的 12 位偏移量。
-
我想我的问题不清楚。我说的是 pci config rw 函数使用的地址参数,据我了解,它是 12 位偏移量。
标签: c linux-kernel qemu pci