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 Signed-off-by: Gleb Natapov <gleb@redhat.com> [Add parentheses around & within && - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Родитель
ac570e0493
Коммит
bcd1c29495
|
@ -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:
|
* There are errata that may cause this bit to not be set:
|
||||||
* AAK134, BY25.
|
* 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);
|
vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI);
|
||||||
|
|
||||||
gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS);
|
gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче