本文将介绍level triggered interrupts 与 remote IRR。

建议先阅读edge and level triggered interrupts

什么是remote IRR

remote IRR是RTE中的某一个bit。

流程

Upon receiving an EOI, for level-trigge vector, LAPIC will broadcast EOI message to all IOAPICs.

描述下时序流程:

  1. INTIN1为1,其对应的 Remote IRR bit 为 0;
  2. IOAPIC发送level-ssert消息给LAPIC,Remote IRR置1;
  3. CPU处理完Dev A的中断,LAPCI发送EOI到IOAPIC,IOAPIC Remote IRR清0;
  4. 由于Dev B的中断还没处理,INTIN1仍然为1,重复第2步的动作;
  5. CPU处理完Dev B的中断,INTIN1为0,Remote IRR为1,IOAPIC发送 level-deassert 消息;
  6. LAPIC清零IRR对应bit;
  7. LAPCI发送EOI到IOAPIC,Remote IRR清零。

参考资料:

  1. Interrupt in Linux