PCIe设备可以使用MSI或者MSI-X报文向处理器提交中断请求,但是对于某个具体的PCIe设备,可能仅支持一种报文。在PCIe设备中含有两个Capability结构,一个是MSI Capability结构,另一个是MSI-X Capability结构。通常情况下一个PCIe设备仅包含一种结构,或者为MSI Capability结构,或者为MSI-X Capability结构。
6.1.1 MSI Capability结构
MSI Capability结构共有四种组成方式,分别是32和64位的Message结构,32位和64位带中断Masking的结构。MSI报文可以使用32位地址或者64位地址,而且可以使用Masking机制使能或者禁止某个中断源。MSI Capability寄存器的结构如图6‑1所示。
- Capability ID字段记载MSI Capability结构的ID号,其值为0x05。在PCIe设备中,每一个Capability结构都有唯一的ID号。
- Next Pointer字段存放下一个Capability结构的地址。
- Message Control字段。该字段存放当前PCIe设备使用MSI机制进行中断请求的状态与控制信息,如表6‑1所示。
Bits |
定义 |
描述 |
|
15:9 |
Reserved |
保留位。系统软件读取该字段时将返回全零,对此字段写无意义。 |
|
8 |
Per-vector Masking Capable |
该位为1时,表示支持带中断Masking的结构;如果为0,表示不支持带中断Masking的结构。该位对系统软件只读,该位在PCIe设备初始化时设置。 |
|
7 |
64 bit Address Capable |
该位为1时,表示支持64位地址结构;如果为0,表示只能支持带32位地址结构。该位对系统软件只读,该位在PCIe设备初始化时设置。 |
|
6:4 |
Multiple Message Enable |
该字段可读写,表示软件分配给当前PCIe |