Я пытаюсь включить несколько строк MSI irq в модуле ядра. Я работаю в режиме RC. Проблема в том, что когда я вызываю pci_enable_msi_block()
, он не выделяет более 1 MSI. Если я вызову pci_enable_msi_block(dev, 32)
, он вернет 4 (что, как я полагаю, должно означать, что я могу использовать 4 MSI). Затем я вызываю pci_enable_msi_block(dev,4)
, и он возвращает 1.
Вот вывод из $lspci -v
после insmod Custom_module.ko
, но только с успешным включением 1 MSI
00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Memory at <ignored> (32-bit, non-prefetchable)
Memory at <ignored> (32-bit, prefetchable)
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00001000-00001fff
Memory behind bridge: 50000000-501fffff
Prefetchable memory behind bridge: 50200000-503fffff
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Port (Slot-), MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: pcieport
01:00.0 Memory controller: Xilinx Corporation Device 7022
Subsystem: Xilinx Corporation Device 0007
Flags: bus master, fast devsel, latency 0, IRQ 576
Memory at 50000000 (32-bit, non-prefetchable) [size=1M]
Capabilities: [80] Power Management version 3
Capabilities: [90] MSI: Enable+ Count=4/4 Maskable- 64bit+
Capabilities: [c0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: Custom_Module
Как я могу использовать более 1 MSI. Я могу использовать JTAG для редактирования регистров Enable_MSI, а затем EP может активировать MSI, но нет обработчика, предназначенного для этих IRQ.
pci_enable_msi_block
во второй раз запрашиваю 4 MSI, он возвращает 1. - person whh4000   schedule 23.06.2014