The Interrupt Engine handles the queue based interrupts and the error interrupt.
The following figure shows the Interrupt Engine block diagram.
The Interrupt Engine gets the interrupts from H2C MM, H2C stream, C2H MM, C2H stream, or error interrupt.
It handles the interrupts in two ways: direct interrupt or indirect
interrupt. The interrupt sources has the information that shows if it is direct
interrupt or indirect interrupt. It also has the information of the vector. If it is
direct interrupt, the vector is the interrupt vector that is used to generate the
PCIe MSI-X message (the interrupt vector indix
of the MSIX table). If it is indirect interrupt, the vector is the ring index of the
Interrupt Aggregation Ring. The interrupt source gets the information of interrupt type
and vector from the Descriptor Software Context, the Completion Context, or the error
interrupt register.