VirtualBox

Changeset 99649 in vbox for trunk


Ignore:
Timestamp:
May 8, 2023 6:32:00 AM (17 months ago)
Author:
vboxsync
Message:

VMM/TRPM: Nested VMX: bugref:10318 Don't invoke IEMExecVmxVmexitExtInt if IEMInjectTrap is going to be invoked as it handles the external-interrupt VM-exit. Comments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/TRPM.cpp

    r99051 r99649  
    387387    {
    388388        *pfInjected = true;
    389 # ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    390         if (   CPUMIsGuestInVmxNonRootMode(pCtx)
    391             && CPUMIsGuestVmxInterceptEvents(pCtx)
    392             && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT))
    393         {
    394             VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
    395             Assert(rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE);
    396             return VBOXSTRICTRC_VAL(rcStrict);
    397         }
    398 # endif
    399389# ifdef RT_OS_WINDOWS
    400390        if (!VM_IS_NEM_ENABLED(pVM))
    401391        {
     392# endif
     393# ifdef VBOX_WITH_NESTED_HWVIRT_VMX
     394            /*
     395             * If we are NOT calling IEMInjectTrap, we need to handle the
     396             * VMX nested-guest external-interrupt VM-exit here.
     397             */
     398            if (   CPUMIsGuestInVmxNonRootMode(pCtx)
     399                && CPUMIsGuestVmxInterceptEvents(pCtx)
     400                && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT))
     401            {
     402                Assert(CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT));
     403                VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
     404                Assert(rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE);
     405                return VBOXSTRICTRC_VAL(rcStrict);
     406            }
    402407# endif
    403408            rc = TRPMAssertTrap(pVCpu, u8Interrupt, TRPM_HARDWARE_INT);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette