I am re-posting the question because it was asked a year ago and then was forgotten about:
I am trying to write a kernel module that will handle multiple different MSI interrupts generated from a single EP. During boot I see this:
[ 16.741897] keystone-pcie: pcie - number of legacy irqs = 4
[ 16.741940] keystone-pcie: pcie - number of MSI host irqs = 8, msi_irqs = 32
I do not necessarily need 32 MSI irqs but why does it show MSI host irqs = 8?
In my kernel module, I call pci_enable_msi_block(dev, 32) and it returns 4 to me. I assume this means that I should then call pci_enable_msi_block(dev, 4) in order to enable 4 MSI interrupts, unfortunately this call returns 1. Which I assume means that the device can only enable 1 MSI interrupts (why would it return 4 before?). I then call pci_enable_block(dev, 1) and sucesfully enable 1 MSI. How do I go about enabling more MSI? Am I correct that since I am enabling host side interrupts, it should not matter how many MSI are enabled on the EP?
Here is a link to the previous post: