前面讲了MSI中断的机制,其实MSI-X Capability中断机制与MSI Capability的中断机制类似。既然机制类似,为啥还要需要引入MSI-X呢?
回答这个问题前,我们先看看MSI有哪些限制?
(1) MSI相关的寄存器都是在配置空间中,从Message Control寄存器multiple message Capble字段可以看出MSI最多支持32个中断向量,且必须是2n,也就是说如果一个function需要3个中断向量,必须申请4个才可以满足。
(2) MSI要求中断控制器分配给该function的中断向量号必须连续。
所以MSI-X的出现就是为了解决上面两个问题,主要是第二个问题。