C-处理QEMU设备中的PCI读/写入配置空间



我正在努力在QEMU中实现一个简单的PCI设备,并为其实现一个内核驱动程序,我在处理PCI_READ/WIRTIN_CONFIG_*函数呼叫的情况下遇到了一些麻烦。p>与内存映射栏上的简单RW操作不同,在该栏中,Memory RegiegionOps回调接收驱动程序使用的确切偏移量,config_read/write回调在pcidevice struct中实现为成员,接收一个通过某些操纵/映射I的地址,该地址i很难理解。

按照pci_config_host_read/write在qemu源中遵循代码路径,在pci_read/write_config_* functions的内核侧中with,没有提供任何清晰的答案。

>

任何人都可以帮助我了解如何提取驱动程序使用PCI配置RW功能时使用的配置偏移?

如果将PCI设备模型设置为实现QEMU PCIDEVICE CONFIC_READ_READ和CONFIG_WRITE方法,则传递给它们的地址应该是偏移到PCI配置空间(即从标准0开始== pci_vendor_id,2 == pci_device_id,4 == pci_command等,等等,以及标准化配置空间的64个字节之后的任何特定设备特定内容(。

最新更新