SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
MSI are interrupts designed specifically for PCIe, unlike the legacy PCI events seen in the Section 24.9.4.6.2.1. They are mapped on the MSI interrupt line of PCIe controller, using a single status bit in the PCIECTRL_TI_CONF_IRQSTATUS_MSI register. The "MSI controller" decodes and records each received MSI write as a specific "vector" coming from a specific EP function. Each application assigns a dedicated meaning to a given vector. Each function can use up to 32 vectors, as configured by the RC. MSI vectors can only be "asserted" by the EP function, unlike PCI legacy events that can be asserted and deasserted. In other words, the local software has to "clear" the asserted vector before it can be reused.
The PCIECTRL_TI_CONF_IRQSTATUS_MSI status bit MSI must remain set as long as a vector is still set. Once the last vector has been cleared, the MSI bit must be cleared by software.
See also Section 24.9.4.6.2.2.3.
Typical MSI interrupt service routine on the RC-configured PCIe controller: