2016-01-03 3 views
1

Я работаю над эмулированным устройством QEMU для имитации интерфейса PCI-интерфейса FPGA. Я использую устройство лева Ч в качестве базового шаблона:Эмуляция 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

Смежные вопросы