Hi,
I am developing an driver which needs to use multiple MSI-x. I rebuilt IOPCIFamily with flag SUPPORT_MULTIPLE_MSI to properly configure every vector (without it, the data for each one in vector table was 0). The problem is as follows:
Whenever two interrupts are registered using IOService::registerInterrupt(), the handlers for both of the irqs are not being executed. The issue comes when using IOInterruptEventSource and without it.
As soon as the interrupts are unregistered by calling IOService::unregisterInterrupt(), so only single MSI-x is registered, the handler is being executed again.
I was investigating the code for IOMessagedInterruptController and IOPCIDevice and it seems that IOPCIFamily is supporting multiple MSI-x.
Does anyone come with similar issue?