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