SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
Unlike legacy PCI interrupts, MSI must be configured by the RC in each function before use. Depending on its reception capacities, the RC can enable between 1 and 32 vectors (individual events) per MSI-enabled EP function.
The current RC implementation supports MSI reception for up to 8 different EP functions, with up to the protocol’s maximum (32) vectors a piece, all mapped to a single MSI address. MSI reception is handled by the “MSI controller” though non-standard “port logic” (PL) registers (mapped in the PCI config space): For more details see the PCIe controller port logic associated PCIECTRL_PL_MSI_CTRL_x registers in the Section 26.9.7.5.1.
The reception of MSI implicitly requires the MSI mailbox address (in PCI memory space) to be routed to the RC: refer to Section 26.9.4.7, PCIe Controller Address Spaces and Address Translation for that. The MSI address (32-bit or 64-bit) is programmed in dedicated PCIe PL registers.
The MSI message data (MWr DWORD) is encoded as follows for the current RC. This encoding shall be used by the RC to configure the remote EP discovered at enumeration.
Bit range | Size | Value | Comment |
---|---|---|---|
31:16 | 16 | 0x0000 | Reserved as per PCI standard |
15:8 | 8 | 0x00 | Unused, always zero |
7:5 | 3 | 0 to 7 | Identifier of EP function in MSI controller (8 possible values) |
4:0 | 5 | 0 to 31 | Interrupt vector for the EP (32 possible values) |
An inbound access recognized as MSI is terminated inside the controller, and does not appear on the PCIe controller's master port like other inbound memory writes in the same range.