- Timestamp:
- Jul 17, 2014 11:28:01 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r52067 r52072 5822 5822 enmReflect = VMXREFLECTXCPT_TF; 5823 5823 } 5824 else if ( uIntType == VMX_IDT_VECTORING_INFO_TYPE_NMI 5825 && (pVCpu->hm.s.vmx.u32PinCtls & VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI)) 5824 else if ( uIntType == VMX_IDT_VECTORING_INFO_TYPE_HW_XCPT 5825 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_EXT_INT 5826 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_NMI) 5827 { 5828 /* 5829 * Ignore software interrupts (INT n), software exceptions (#BP, #OF) and 5830 * privileged software exception (#DB from ICEBP) as they reoccur when restarting the instruction. 5831 */ 5832 enmReflect = VMXREFLECTXCPT_XCPT; 5833 } 5834 } 5835 else 5836 { 5837 /* 5838 * If event delivery caused an EPT violation/misconfig or APIC access VM-exit, then the VM-exit 5839 * interruption-information will not be valid and we end up here. In such cases, it is sufficient to reflect the 5840 * original exception to the guest after handling the VM-exit. 5841 */ 5842 if ( uIntType == VMX_IDT_VECTORING_INFO_TYPE_NMI 5843 && (pVCpu->hm.s.vmx.u32PinCtls & VMX_VMCS_CTRL_PIN_EXEC_VIRTUAL_NMI)) 5826 5844 { 5827 5845 /* … … 5837 5855 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_EXT_INT 5838 5856 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_NMI) 5839 {5840 /*5841 * Ignore software interrupts (INT n), software exceptions (#BP, #OF) and5842 * privileged software exception (#DB from ICEBP) as they reoccur when restarting the instruction.5843 */5844 enmReflect = VMXREFLECTXCPT_XCPT;5845 }5846 }5847 else5848 {5849 /*5850 * If event delivery caused an EPT violation/misconfig or APIC access VM-exit, then the VM-exit5851 * interruption-information will not be valid and we end up here. In such cases, it is sufficient to reflect the5852 * original exception to the guest after handling the VM-exit.5853 */5854 if ( uIntType == VMX_IDT_VECTORING_INFO_TYPE_HW_XCPT5855 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_EXT_INT5856 || uIntType == VMX_IDT_VECTORING_INFO_TYPE_NMI)5857 5857 { 5858 5858 enmReflect = VMXREFLECTXCPT_XCPT;
Note:
See TracChangeset
for help on using the changeset viewer.