最近在看virtual exceptions 搞的不是很懂。我在看的是DDI0406C_arm_architecture_reference_manual。
p.1177 Determining the mode to which the IRQ exception is taken
p. 1194 B1.8.11 Virtual exceptions in the Virtualization Extensions
這兩個地方敘述的virtual interrupt的走法我覺得和IHI0048B_gic_architecture_specification p.157裏面畫的圖兜不太起來。我覺得奇怪的是arm architecture spec p.1177的畫法看起來physical IRQ exception 一進來到最後HCR.IMO != 1 -->
SCTLR.VE !=1 最後就會進入 Non-secure IRQ mode,也就是所謂guest OS 的 IRQ mode。看來就是按照CPU本身並不需要外來的GIC interrupt controller輔助就可以達成vIRQ的功能。那為何在GIC本身(p.157)還需要先進入到Hypervisor mode在去設定link register再去trigger一次vIRQ,才能再發出vIRQ?