在QEMU / VFIO环境中跟踪PCI设备内存I / O操作

问题描述 投票:0回答:1

我正在尝试在QEMU / VFIO环境下对某些PCI设备进行反向工程,我想跟踪卡所产生的物理内存上的所有I / O操作。该卡利用PCI总线主控功能,将内容写入其他设备,并且很可能从主机RAM读取驱动程序预处理的一些数据。到目前为止,我只能跟踪对卡MMIO空间的所有读写(从主机到设备的数据传输),可惜我缺少R / W操作的第二方向(设备从主机获取数据)。

是否有可能跟踪PCI设备在物理内存上执行的I / O操作,即在QEMU / VFIO环境下直接进行I / O和/或DMA传输?我已启用以下事件的跟踪:

vfio_pci_read_config vfio_pci_write_config vfio_region_writevfio_region_read vfio_intx_interrupt vfio_intx_eoi vfio_intx_updatevfio_intx_enable vfio_intx_disable vfio_msi_interruptvfio_populate_device_config vfio_region_mmap

是否有任何事件允许执行可以在QEMU中注册的事情?预先谢谢你。

memory trace qemu pci vfio
1个回答
0
投票

PCI设备被视为外围设备,这意味着它具有自己的处理单元并运行自己的固件。对mmio区域的访问发生在外围设备中,因此无法通过QEMU进行跟踪。

由于执行的内存指令调用了一个回调函数来处理VFIO中的mmio访问,因此可以在QEMU VM中跟踪对mmio的读写。

由于PCI设备在其固件中读/写mmio区域(由设备的处理单元执行,因此您无法在主机端跟踪事件。

我认为您可以做的是在反向工程期间将mmio_read值与mmio_write值进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.