2017-08-16 10:54-0500, Janakarajan Natarajan:
Enable the Virtual GIF feature. This is done by setting bit 25 at positionWhy don't we enable STGI interception to get notified that the window
60h in the vmcb.
With this feature enabled, the processor uses bit 9 at position 60h as the
virtual GIF when executing STGI/CLGI instructions.
Since the execution of STGI by the L1 hypervisor does not cause a return to
the outermost (L0) hypervisor, the enable_irq_window and enable_nmi_window
are modified.
The IRQ and NMI windows will be opened even if GIF is not set, under the
assumption that on resuming the L1 hypervisor the IRQ and NMI will be
held pending until the processor executes the STGI instruction.
Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@xxxxxxx>
---
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
@@ -4702,8 +4735,8 @@ static void enable_nmi_window(struct kvm_vcpu *vcpu)
== HF_NMI_MASK)
return; /* IRET will cause a vm exit */
- if ((svm->vcpu.arch.hflags & HF_GIF_MASK) == 0)
- return; /* STGI will cause a vm exit */
+ if (!vgif_enabled(svm) && !gif_set(svm))
+ return; /* STGI will cause a vm exit or HW will set VGIF*/
has opened? (I doubt that single stepping would be faster ...)
Thanks.