On 06/12/19 21:47, Sean Christopherson wrote: >> When reading the codes, I find the definitions of interrupt-window exiting >> and nmi-window exiting don't match the names in latest intel SDM. > I prefer KVM's names even though they diverge from the SDM. The "window > exiting" terminology is very literal, which is desirable for the SDM > because it doesn't leave any wiggle room. But for software, IMO the > "event pending" terminology is preferable as it's more descriptive of the > intended use of the control, e.g. KVM sets VIRTUAL_{INTR,NMI}_PENDING when > it has a virtual event to inject and clears it after injecting said event. > On the other hand: static void enable_irq_window(struct kvm_vcpu *vcpu) { exec_controls_setbit(to_vmx(vcpu), CPU_BASED_VIRTUAL_INTR_PENDING); } static void enable_nmi_window(struct kvm_vcpu *vcpu) { if (!enable_vnmi || vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_STI) { enable_irq_window(vcpu); return; } exec_controls_setbit(to_vmx(vcpu), CPU_BASED_VIRTUAL_NMI_PENDING); } so we're already using a lot the "window" nomenclature in KVM. I've applied Xiaoyao's patches. Paolo