Changeset 52067 in vbox
- Timestamp:
- Jul 17, 2014 7:13:28 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95069
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r52066 r52067 6848 6848 switch (uVector) 6849 6849 { 6850 case X86_XCPT_NMI: 6851 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_NMI << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 6852 break; 6853 6850 6854 case X86_XCPT_BP: 6851 6855 case X86_XCPT_OF: … … 6869 6873 else if (enmTrpmEvent == TRPM_HARDWARE_INT) 6870 6874 { 6871 if (uVector == X86_XCPT_NMI) 6872 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_NMI << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 6873 else 6874 { 6875 uint32_t uEFlags = CPUMGetGuestEFlags(pVCpu); 6876 if (!(uEFlags & X86_EFL_IF)) 6877 return VERR_VMX_IPE_5; 6878 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 6879 } 6875 /** @todo r=ramshankar: Make this a strict-build assert after this bug is 6876 * fixed. See @bugref{7317}. */ 6877 uint32_t uEFlags = CPUMGetGuestEFlags(pVCpu); 6878 if (!(uEFlags & X86_EFL_IF)) 6879 { 6880 Log4(("hmR0VmxTrpmTrapToPendingEvent: TRPM injecting an external interrupt when interrupts are disabled!?!")); 6881 return VERR_VMX_IPE_5; 6882 } 6883 6884 u32IntInfo |= (VMX_EXIT_INTERRUPTION_INFO_TYPE_EXT_INT << VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT); 6880 6885 } 6881 6886 else if (enmTrpmEvent == TRPM_SOFTWARE_INT) … … 6917 6922 { 6918 6923 case VMX_IDT_VECTORING_INFO_TYPE_EXT_INT: 6919 case VMX_IDT_VECTORING_INFO_TYPE_NMI:6920 6924 enmTrapType = TRPM_HARDWARE_INT; 6921 6925 break; … … 6925 6929 break; 6926 6930 6931 case VMX_IDT_VECTORING_INFO_TYPE_NMI: 6927 6932 case VMX_IDT_VECTORING_INFO_TYPE_PRIV_SW_XCPT: 6928 6933 case VMX_IDT_VECTORING_INFO_TYPE_SW_XCPT: /* #BP and #OF */
Note:
See TracChangeset
for help on using the changeset viewer.