amd sdm implies CLGI can block vINTR
Table 15-10 Effect of the GIF on Interrupt Handling
15.21.4 Injecting Virtual (INTR) Interrupts
The processor takes a virtual INTR interrupt if:
- V_IRQ and V_INTR_PRIO indicate that there is a virtual interrupt pending whose priority is greater than the value in V_TPR,
- interrupts are enabled in EFLAGS.IF,
- interrupts are enabled using GIF, and ^^^
- the processor is not in an interrupt shadow (see Section 15.21.5).
The above description almost implies that CLGI can block virtual interrupts.
kernel code implies it can not...
The code logic for entering the guest in the kernel as follows
clgi
|
v
VMRUN
|
v
stgi
If CLGI masks virtual interrupts, then there will no longer be any injection of virtual interrupts (except for event injection), which seems inconsistent between the two.
