Changeset 87034 in vbox
- Timestamp:
- Dec 3, 2020 12:29:59 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 141682
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r86730 r87034 8912 8912 AssertRC(rc); 8913 8913 8914 /* 8915 * EFLAGS.IF does not control the blocking of external interrupts when 8916 * "External interrupt exiting" set. Fixes nasty SMP hang while executing nested-guest 8917 * VCPUs on spinlocks and aren't rescued by other VM-exits (like a preemption timer), 8918 * see @bugref{9562#c18}. 8919 * 8920 * See Intel spec. 25.4.1 "Event Blocking" 8921 */ 8922 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 8923 if ( fIsNestedGuest 8924 && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT) 8925 && !CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT)) 8926 { 8927 VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, 0 /* uVector */, true /* fIntPending */); 8928 Assert(rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE); 8929 return rcStrict; 8930 } 8931 #endif 8914 8932 if (pCtx->eflags.u32 & X86_EFL_IF) 8915 8933 { 8916 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX8917 if ( fIsNestedGuest8918 && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)8919 && !CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))8920 {8921 VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, 0 /* uVector */, true /* fIntPending */);8922 Assert(rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE);8923 return rcStrict;8924 }8925 #endif8926 8934 uint8_t u8Interrupt; 8927 8935 rc = PDMGetInterrupt(pVCpu, &u8Interrupt);
Note:
See TracChangeset
for help on using the changeset viewer.