VirtualBox

Changeset 75885 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Dec 3, 2018 5:52:06 AM (6 years ago)
Author:
vboxsync
Message:

VMM/EM: Nested VMX: bugref:9180 Handle VMX-preemption timer VM-exits and MTF VM-exits in the EM loop. Also, why are we not injecting NMIs here when we inject interrupts?

File:
1 edited

Legend:

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

    r75833 r75885  
    21112111        }
    21122112
     2113#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
     2114        /*
     2115         * VMX Nested-guest monitor-trap flag (MTF) VM-exit.
     2116         * Takes priority over "Traps on the previous instruction".
     2117         * See Intel spec. 6.9 "Priority Among Simultaneous Exceptions And Interrupts".
     2118         */
     2119        if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_MTF))
     2120        {
     2121            rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitMtf(pVCpu));
     2122            Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE);
     2123            UPDATE_RC();
     2124        }
     2125
     2126        /*
     2127         * VMX Nested-guest preemption timer VM-exit.
     2128         * Takes priority over non-maskable interrupts (NMIs).
     2129         */
     2130        if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_PREEMPT_TIMER))
     2131        {
     2132            rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitPreemptTimer(pVCpu));
     2133            if (rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE)
     2134                UPDATE_RC();
     2135        }
     2136#endif
     2137
    21132138        /*
    21142139         * Interrupts.
     
    21902215            }
    21912216        }
    2192 
    2193         /*
    2194          * VMX Nested-guest monitor-trap flag (MTF) VM-exit.
    2195          */
    2196 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    2197         if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_MTF))
    2198         {
    2199             rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitMtf(pVCpu));
    2200             UPDATE_RC();
    2201         }
    2202 #endif
    22032217
    22042218        /*
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