【ARMv8v9 GIC 系列 1.8 -- PE 中断处理的前期评估】
Interaction of group and individual interrupt enables
在 ARM GICv3和GICv4架构中, GICD_*
和 GICR_*
寄存器 组 决定了处理器元素(PE)能够识别的最高优先级 pending interrupt 。这些寄存器决定PE的最高优先级 pending interrupt 。这个 pending interrupt 被提交给PE的 CPU Interface,由它来决定是否将其标记给PE。中断的使能对这一决定有如下影响:
- Disable的 Pending Interrupt :在
GICD_*
或GICR_*
寄存器中被 Disable 的 pending interrupt ,在确定最高优先级 pending interrupt 时不被考虑,因此不能被标记给PE。 - 属于 Disable 组的 Enable 中断 :在
GICD_*
或GICR_*
寄存器中被 Enable 但属于在GICD_CTLR
中被 Disable的组的 pending interrupt ,在确定最高优先级 pending interrupt 时不被考虑,因此不能被标记给PE。 - 属于 Disable组的1对N 中断 :在
GICD_*
寄存器中被 Enable 且属于在GICD_CTLR
中 Enable 的组,但同时属于在ICC_IGRPEN0_EL1
、ICC_IGRPEN1_EL1
或ICC_IGRPEN1_EL3
中针对某PE被 Disable 的组的1对N pending interrupt ,不能为那个PE所选。这样的中断在确定最高优先级 pending interrupt 时不被考虑,因此不能被标记给PE。 - 属于Disable 组的直接中断 :在
GICD_*
或GICR_*
寄存器中被 Enable 且属于在GICD_CTLR
中 Enable 的组,但同时属于在ICC_IGRPEN0_EL1
、ICC_IGRPEN1_EL1
或ICC_IGRPEN1_EL3
中针对某PE被 Disable 的组的直接 pending interrupt ,是否被考虑在确定最高优先级 pending interrupt 时是由具体实现定义的。如果它被确定为最高优先级 pending interrupt ,该中断不会被标记给PE,但会屏蔽属于在ICC_IGRPEN0_EL1
、ICC_IGRPEN1_EL1
或ICC_IGRPEN1_EL3
中启用的组的较低优先级的 pending interrupt 。
LPIs的启用
- 局部中断(LPIs) :是通过LPI配置表中的 Enable 位启用的。这为更细粒度的中断管理提供了灵活性,允许对每个LPI进行个别配置和管理。