Hello,
We are working on a bus driver for a third party card that can enumerate child devices. We were originally using pin-based interrupts, but now I have implemented MSI-x interrupt support and it appears to be working properly. The proper registry keys are set in the registry and the interrupts appear to work properly; I also see that the interrupt vectors are being set up as expected, and when I query and check the MessageSignaled bit of the WDF_INTERRUPT_INFO struct, I see that it is set to TRUE.
If I have the third party bus driver installed and I switch to our driver, everything works as expected. The problem is that if I boot the PC with our driver installed, things only work properly until a device is plugged into the bus. At this point, the system is swamped with interrupts unendingly and everything freezes. If I unplug the device, the system unfreezes itself, but I can see the interrupt storm continuing indefinitely.
We are not acknowledging the message signalled interrupts any differently than we were acknowledging pin-based interrupts, in terms of host controller registers.
It seems as though the third party driver is setting the card into some state the prevents the interrupt storm, but I’m not sure what this could be and we are not currently able to capture a PCI-e trace.
The third party developer is not willing to assist us, and I can’t find anything in the spec that would suggest we are missing a step or should be acknowledging the message interrupts in some general way as they come in.
I know that this is a total shot in the dark, but does anyone have any clues as to what might be causing this?
Thanks in advance.
Regards,
Richard