KVM: VMX: do not check bit 12 of EPT violation exit qualification when undefined
PATCH 1/1 KVM: VMX: do not check bit 12 of EPT violation exit qualification when undefined
Bit 12 is undefined in any of the following cases:
- If the "NMI exiting" VM-execution control is 1 and the "virtual NMIs" VM-execution control is 0.
- If the VM exit sets the valid bit in the IDT-vectoring information field
arch/x86/kvm/vmx.c +3 -1
@@ -5345,7 +5345,9 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)* There are errata that may cause this bit to not be set: * AAK134, BY25. */ -if (exit_qualification &INTR_INFO_UNBLOCK_NMI ) +if (!(to_vmx (vcpu)->idt_vectoring_info &VECTORING_INFO_VALID_MASK ) && +cpu_has_virtual_nmis () && + exit_qualification &INTR_INFO_UNBLOCK_NMI )vmcs_set_bits (GUEST_INTERRUPTIBILITY_INFO ,GUEST_INTR_STATE_NMI ); gpa =vmcs_read64 (GUEST_PHYSICAL_ADDRESS );
--
Gleb.
Il 25/09/2013 09:58, Gleb Natapov ha scritto:
Quoted 22 lines
Bit 12 is undefined in any of the following cases:
- If the "NMI exiting" VM-execution control is 1 and the "virtual NMIs" VM-execution control is 0.
- If the VM exit sets the valid bit in the IDT-vectoring information fieldSigned-off-by Gleb Natapov <[email protected]>arch/x86/kvm/vmx.c +3
-2@@ -5345,7 +5345,9 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)* There are errata that may cause this bit to not be set: * AAK134, BY25. */ -if (exit_qualification &INTR_INFO_UNBLOCK_NMI ) +if (!(to_vmx (vcpu)->idt_vectoring_info &VECTORING_INFO_VALID_MASK ) && +cpu_has_virtual_nmis () && + exit_qualification &INTR_INFO_UNBLOCK_NMI )vmcs_set_bits (GUEST_INTERRUPTIBILITY_INFO ,GUEST_INTR_STATE_NMI ); gpa =vmcs_read64 (GUEST_PHYSICAL_ADDRESS ); --
Quoted 6 lines
Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Applied to kvm/master, thanks.
Paolo