2016-01-03 169 views
1

我正在模擬QEMU器件以模擬FPGA PCIe接口。我現在用的是利,PCI設備的基本模板:QEMU msi仿真

https://github.com/levex/kernel-qemu-pci/blob/master/qemu/hw/char/lev-pci.c

我的設備使用MSI中斷通信。內核驅動程序模塊能夠啓用MSI中斷並接收它們。我已經修改列夫 - pci.c到

msi_init(dev, 0x70, 1, false, false); 

添加到初始化,然後

msi_notify(pci_dev,0); 

的「pci_levdev_read」功能作爲基本測試。我可以跟蹤調試器中正在生成的msi中斷,但我沒有收到主機上的中斷。我錯過了啓用MSI中斷的步驟嗎?

回答

0

解決方案是在內核模塊中啓用DMA。

pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) 
pci_set_master(pdev) 
+0

如果問題解決了,請將您的問題標記爲已回答。 – mimimito