我正在QEMU中实现一个简单的PCI设备和一个内核驱动程序,在处理来自设备端的pci_read/write_config_*函数调用时遇到了一些问题。
与内存映射栏上的简单rw操作不同,config_read/write回调接收驱动程序使用的确切偏移量,而作为PCIDevice结构中的成员实现的config_read/write回调接收经过一些操作/映射的地址,这让我很难理解。
遵循QEMU源代码中直到pci_config_host_read/write的代码路径,以及内核端的pci_read/write_config_*函数,都没有提供任何明确的答案。
谁能帮助我了解在调用pci config rw函数时,如何提取驱动程序使用的配置偏移量?
发布于 2019-05-10 01:04:45
如果您将PCI设备模型设置为实现QEMU PCIDevice config_read和config_write方法,则传递给它们的地址应该是PCI配置空间中的偏移量(例如,从标准的0 == PCI_VENDOR_ID、2 == PCI_DEVICE_ID、4 == PCI_COMMAND等开始,以及标准化配置空间64字节之后的任何特定于设备的内容)。
https://stackoverflow.com/questions/55982046
复制相似问题