I am working on a network driver for an FPGA endpoint that supports MSI interrupts with multiple messages (not msix) on the PCIe bus. The host processor is an x86 Intel i7 620LM running on CentOS with a 4.2 kernel.
The FPGA endpoint correctly advertises several msi vectors in it. MSI Capability Register (0x101 = 32 possible possible vectors).
From what I can tell, a multifunctional function has been added in kernel 4.2. Unfortunately, when I call pci_enable_msi_range(pdev, 1, 32); , it returns only 1 . When I call pci_msi_vec_count(pdev); , it returns 32 . I can query the irq handler on a single vector and it works as expected.
Does anyone know if multithreaded MSI vectors are really supported on Linux on the x86 architecture?
UPDATE: I was able to enable all 32 MSI vectors using a different SBC with an i7-4700EQ processor. This is with the 4.4-rc1 core.
UPDATE: Works with 4.2 too.
UPDATE: In this case, the problem was loading. I managed to get some vectors working after I updated the dossier.
source share