LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Kernel (https://www.linuxquestions.org/questions/linux-kernel-70/)
-   -   4.1.13: pci_enable_msi_range returns 1 (and not 8) (https://www.linuxquestions.org/questions/linux-kernel-70/4-1-13-pci_enable_msi_range-returns-1-and-not-8-a-4175617636/)

zvivered 11-14-2017 09:42 PM

4.1.13: pci_enable_msi_range returns 1 (and not 8)
 
Hello,

I'm using a PCIe FPGA firmware that supports 8 MSI interrupts.
But calling to:
pci_enable_msi_range(pDev, 1, 8) returns 1.

Also checked that in kernel configuration, CONFIG_PCI_MSI=y

Is it only a firmware problem ?

Thank you,
Zvika

zvivered 11-26-2017 12:59 PM

Hello,

After adding CONFIG_IRQ_REMAP to the kernel, calling to:
pci_enable_msi_range(pPciDev, 1, 4), returned 4.

Then I called to:

devm_request_irq(&pPciDev->dev,
pPciDev->irq,
Irq0Handler,
0,
DEVICE_NAME,
0);

...

devm_request_irq(&pPciDev->dev,
pPciDev->irq+3,
Irq3Handler,
0,
DEVICE_NAME,
0);

to connect an handler to each of the IRQs.

But there is still a problem.

For 2 different interrupts, Irq0Handler is called.

Is there a way to make sure my FPGA creates 2 different MSI interrupts ?

If CONFIG_IRQ_REMAP is mandatory, seems strange I had to add it. I think it should
be in the defconfig.

Thank you,
Zvika

zvivered 12-11-2017 01:28 PM

Hello,

The cause to the problem - FPGA design.

It seems that in ALTERA (Arria 5 gx), in order to have more than one MSI (or MSI-X) interrupts,
the FPGA has to contain user logic to handle it. The PCIe core is not enouth.

Thank you,
Zvika


All times are GMT -5. The time now is 02:29 AM.