|
@@ -5339,6 +5339,15 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * EPT violation happened while executing iret from NMI,
|
|
|
+ * "blocked by NMI" bit has to be set before next VM entry.
|
|
|
+ * There are errata that may cause this bit to not be set:
|
|
|
+ * AAK134, BY25.
|
|
|
+ */
|
|
|
+ if (exit_qualification & INTR_INFO_UNBLOCK_NMI)
|
|
|
+ vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI);
|
|
|
+
|
|
|
gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS);
|
|
|
trace_kvm_page_fault(gpa, exit_qualification);
|
|
|
|