VirtualBox

Ignore:
Timestamp:
Nov 27, 2018 11:23:24 AM (6 years ago)
Author:
vboxsync
Message:

VMM/TRPM: Nested VMX: bugref:9180 Put the "acknowledge interrupt on exit" in the code-path that is not raw-mode.

File:
1 edited

Legend:

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

    r74875 r75767  
    15191519    if (RT_SUCCESS(rc))
    15201520    {
    1521 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    1522         /* Handle the "acknowledge interrupt on exit" VM-exit intercept. */
    1523         if (CPUMIsGuestInVmxNonRootMode(pCtx))
    1524         {
    1525             if (   CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT)
    1526                 && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT))
    1527             {
    1528                 VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
    1529                 Assert(rcStrict != VINF_PGM_CHANGE_MODE);
    1530                 if (rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE)
    1531                     return VBOXSTRICTRC_TODO(rcStrict);
    1532             }
    1533         }
    1534 #endif
    15351521        if (EMIsSupervisorCodeRecompiled(pVM) || !VM_IS_RAW_MODE_ENABLED(pVM))
    15361522        {
     
    16021588    if (RT_SUCCESS(rc))
    16031589    {
     1590#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
     1591        /* Handle the "acknowledge interrupt on exit" VM-exit intercept. */
     1592        if (CPUMIsGuestInVmxNonRootMode(pCtx))
     1593        {
     1594            if (   CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT)
     1595                && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT))
     1596            {
     1597                VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
     1598                Assert(rcStrict != VINF_PGM_CHANGE_MODE);
     1599                if (rcStrict != VINF_VMX_INTERCEPT_NOT_ACTIVE)
     1600                    return VBOXSTRICTRC_TODO(rcStrict);
     1601            }
     1602        }
     1603#endif
    16041604        if (!VM_IS_NEM_ENABLED(pVM))
    16051605        {
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