VirtualBox

Changeset 72988 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Jul 9, 2018 2:27:49 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123540
Message:

VMM/HMVMXR0, HMSVMR0: Eliminate hidden parameters from a few macros and other minor nits.

Location:
trunk/src/VBox/VMM/VMMR0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r72983 r72988  
    31163116static int hmR0SvmLeaveSession(PVMCPU pVCpu)
    31173117{
    3118     HM_DISABLE_PREEMPT();
     3118    HM_DISABLE_PREEMPT(pVCpu);
    31193119    Assert(!VMMRZCallRing3IsEnabled(pVCpu));
    31203120    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
     
    31813181        VMMRZCallRing3RemoveNotification(pVCpu);
    31823182        VMMRZCallRing3Disable(pVCpu);
    3183         HM_DISABLE_PREEMPT();
     3183        HM_DISABLE_PREEMPT(pVCpu);
    31843184
    31853185        /* Import the entire guest state. */
     
    67256725            /* We're playing with the host CPU state here, make sure we don't preempt or longjmp. */
    67266726            VMMRZCallRing3Disable(pVCpu);
    6727             HM_DISABLE_PREEMPT();
     6727            HM_DISABLE_PREEMPT(pVCpu);
    67286728
    67296729            /* Save the host & load the guest debug state, restart execution of the MOV DRx instruction. */
     
    69566956                /* We're playing with the host CPU state here, make sure we don't preempt or longjmp. */
    69576957                VMMRZCallRing3Disable(pVCpu);
    6958                 HM_DISABLE_PREEMPT();
     6958                HM_DISABLE_PREEMPT(pVCpu);
    69596959
    69606960                STAM_COUNTER_INC(&pVCpu->hm.s.StatDRxIoCheck);
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r72987 r72988  
    144144
    145145/** Assert that preemption is disabled or covered by thread-context hooks. */
    146 #define HMVMX_ASSERT_PREEMPT_SAFE()                 Assert(   VMMR0ThreadCtxHookIsEnabled(pVCpu)   \
     146#define HMVMX_ASSERT_PREEMPT_SAFE(a_pVCpu)          Assert(   VMMR0ThreadCtxHookIsEnabled((a_pVCpu))   \
    147147                                                           || !RTThreadPreemptIsEnabled(NIL_RTTHREAD))
    148148
    149149/** Assert that we haven't migrated CPUs when thread-context hooks are not
    150150 *  used. */
    151 #define HMVMX_ASSERT_CPU_SAFE()                     AssertMsg(   VMMR0ThreadCtxHookIsEnabled(pVCpu) \
    152                                                               || pVCpu->hm.s.idEnteredCpu == RTMpCpuId(), \
     151#define HMVMX_ASSERT_CPU_SAFE(a_pVCpu)              AssertMsg(   VMMR0ThreadCtxHookIsEnabled((a_pVCpu)) \
     152                                                              || (a_pVCpu)->hm.s.idEnteredCpu == RTMpCpuId(), \
    153153                                                              ("Illegal migration! Entered on CPU %u Current %u\n", \
    154                                                               pVCpu->hm.s.idEnteredCpu, RTMpCpuId()))
     154                                                              (a_pVCpu)->hm.s.idEnteredCpu, RTMpCpuId()))
    155155
    156156/** Asserts that the given CPUMCTX_EXTRN_XXX bits are present in the guest-CPU
     
    49914991    Assert(pVCpu);
    49924992    Assert(pVmxTransient);
    4993     HMVMX_ASSERT_PREEMPT_SAFE();
     4993    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    49944994
    49954995    Log4Func(("VM-entry failure: %Rrc\n", rcVMRun));
     
    68926892static int hmR0VmxLeaveSession(PVMCPU pVCpu)
    68936893{
    6894     HM_DISABLE_PREEMPT();
    6895     HMVMX_ASSERT_CPU_SAFE();
     6894    HM_DISABLE_PREEMPT(pVCpu);
     6895    HMVMX_ASSERT_CPU_SAFE(pVCpu);
    68966896    Assert(!VMMRZCallRing3IsEnabled(pVCpu));
    68976897    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
     
    69566956{
    69576957    Assert(pVCpu);
    6958     HMVMX_ASSERT_PREEMPT_SAFE();
     6958    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    69596959
    69606960    if (RT_UNLIKELY(rcExit == VERR_VMX_INVALID_VMCS_PTR))
     
    70857085    Assert(pvUser);
    70867086    Assert(VMMRZCallRing3IsEnabled(pVCpu));
    7087     HMVMX_ASSERT_PREEMPT_SAFE();
     7087    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    70887088
    70897089    VMMRZCallRing3Disable(pVCpu);
     
    72967296static VBOXSTRICTRC hmR0VmxInjectPendingEvent(PVMCPU pVCpu, uint32_t fIntrState, bool fStepping)
    72977297{
    7298     HMVMX_ASSERT_PREEMPT_SAFE();
     7298    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    72997299    Assert(VMMRZCallRing3IsEnabled(pVCpu));
    73007300
     
    79827982{
    79837983    AssertPtr(pVCpu);
    7984     HMVMX_ASSERT_PREEMPT_SAFE();
     7984    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    79857985
    79867986    LogFlowFunc(("pVCpu=%p\n", pVCpu));
     
    81158115static VBOXSTRICTRC hmR0VmxExportGuestStateOptimal(PVMCPU pVCpu)
    81168116{
    8117     HMVMX_ASSERT_PREEMPT_SAFE();
     8117    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    81188118    Assert(!VMMRZCallRing3IsEnabled(pVCpu));
    81198119    Assert(VMMR0IsLogFlushDisabled(pVCpu));
     
    86538653    {
    86548654        Assert(!HMR0SuspendPending());
    8655         HMVMX_ASSERT_CPU_SAFE();
     8655        HMVMX_ASSERT_CPU_SAFE(pVCpu);
    86568656
    86578657        /* Preparatory work for running guest code, this may force us to return
     
    97579757    {
    97589758        Assert(!HMR0SuspendPending());
    9759         HMVMX_ASSERT_CPU_SAFE();
     9759        HMVMX_ASSERT_CPU_SAFE(pVCpu);
    97609760        bool fStepping = pVCpu->hm.s.fSingleInstruction;
    97619761
     
    1002210022    Assert(VMMRZCallRing3IsEnabled(pVCpu));
    1002310023    Assert(!ASMAtomicUoReadU64(&pCtx->fExtrn));
    10024     HMVMX_ASSERT_PREEMPT_SAFE();
     10024    HMVMX_ASSERT_PREEMPT_SAFE(pVCpu);
    1002510025
    1002610026    VMMRZCallRing3SetNotification(pVCpu, hmR0VmxCallRing3Callback, pCtx);
     
    1015310153    } while (0)
    1015410154
    10155 # define HMVMX_VALIDATE_EXIT_HANDLER_PARAMS() \
     10155# define HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(a_pVCpu, a_pVmxTransient) \
    1015610156    do { \
    10157         AssertPtr(pVCpu); \
    10158         AssertPtr(pVmxTransient); \
    10159         Assert(pVmxTransient->fVMEntryFailed == false); \
     10157        AssertPtr((a_pVCpu)); \
     10158        AssertPtr((a_pVmxTransient)); \
     10159        Assert((a_pVmxTransient)->fVMEntryFailed == false); \
    1016010160        Assert(ASMIntAreEnabled()); \
    10161         HMVMX_ASSERT_PREEMPT_SAFE(); \
     10161        HMVMX_ASSERT_PREEMPT_SAFE(a_pVCpu); \
    1016210162        HMVMX_ASSERT_PREEMPT_CPUID_VAR(); \
    10163         Log4Func(("vcpu[%RU32] -v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v\n", pVCpu->idCpu)); \
    10164         HMVMX_ASSERT_PREEMPT_SAFE(); \
    10165         if (VMMR0IsLogFlushDisabled(pVCpu)) \
     10163        Log4Func(("vcpu[%RU32] -v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v\n", (a_pVCpu)->idCpu)); \
     10164        HMVMX_ASSERT_PREEMPT_SAFE(a_pVCpu); \
     10165        if (VMMR0IsLogFlushDisabled((a_pVCpu))) \
    1016610166            HMVMX_ASSERT_PREEMPT_CPUID(); \
    1016710167        HMVMX_STOP_EXIT_DISPATCH_PROF(); \
    1016810168    } while (0)
    1016910169
    10170 # define HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS() \
     10170# define HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(a_pVCpu, a_pVmxTransient) \
    1017110171    do { \
    1017210172        Log4Func(("\n")); \
    1017310173    } while (0)
    10174 #else /* nonstrict builds: */
    10175 # define HMVMX_VALIDATE_EXIT_HANDLER_PARAMS() \
     10174#else
     10175# define HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(a_pVCpu, a_pVmxTransient) \
    1017610176    do { \
    1017710177        HMVMX_STOP_EXIT_DISPATCH_PROF(); \
    10178         RT_NOREF2(pVCpu, pVmxTransient); \
     10178        RT_NOREF2((a_pVCpu), (a_pVmxTransient)); \
    1017910179    } while (0)
    10180 # define HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS() do { } while (0)
     10180# define HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(a_pVCpu, a_pVmxTransient) do { } while (0)
    1018110181#endif
    1018210182
     
    1085010850HMVMX_EXIT_DECL hmR0VmxExitExtInt(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1085110851{
    10852     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     10852    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1085310853    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitExtInt);
    1085410854    /* Windows hosts (32-bit and 64-bit) have DPC latency issues. See @bugref{6853}. */
     
    1086410864HMVMX_EXIT_DECL hmR0VmxExitXcptOrNmi(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1086510865{
    10866     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     10866    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1086710867    STAM_PROFILE_ADV_START(&pVCpu->hm.s.StatExitXcptNmi, y3);
    1086810868
     
    1099910999HMVMX_EXIT_NSRC_DECL hmR0VmxExitIntWindow(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1100011000{
    11001     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11001    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1100211002
    1100311003    /* Indicate that we no longer need to VM-exit when the guest is ready to receive interrupts, it is now ready. */
     
    1101511015HMVMX_EXIT_NSRC_DECL hmR0VmxExitNmiWindow(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1101611016{
    11017     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11017    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1101811018    if (RT_UNLIKELY(!(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_NMI_WINDOW_EXIT)))
    1101911019    {
     
    1105211052HMVMX_EXIT_NSRC_DECL hmR0VmxExitWbinvd(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1105311053{
    11054     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11054    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1105511055    return hmR0VmxAdvanceGuestRip(pVCpu, pVmxTransient);
    1105611056}
     
    1106211062HMVMX_EXIT_NSRC_DECL hmR0VmxExitInvd(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1106311063{
    11064     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11064    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1106511065    return hmR0VmxAdvanceGuestRip(pVCpu, pVmxTransient);
    1106611066}
     
    1107211072HMVMX_EXIT_DECL hmR0VmxExitCpuid(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1107311073{
    11074     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11074    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1107511075
    1107611076    /*
     
    1112711127HMVMX_EXIT_DECL hmR0VmxExitGetsec(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1112811128{
    11129     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11129    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1113011130    int rc  = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR4);
    1113111131    AssertRCReturn(rc, rc);
     
    1114411144HMVMX_EXIT_DECL hmR0VmxExitRdtsc(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1114511145{
    11146     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11146    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1114711147    int rc = hmR0VmxImportGuestState(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK);
    1114811148    rc    |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1117311173HMVMX_EXIT_DECL hmR0VmxExitRdtscp(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1117411174{
    11175     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11175    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1117611176    int rc = hmR0VmxImportGuestState(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK | CPUMCTX_EXTRN_TSC_AUX);
    1117711177    rc    |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1120211202HMVMX_EXIT_DECL hmR0VmxExitRdpmc(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1120311203{
    11204     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11204    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1120511205    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1120611206    AssertRCReturn(rc, rc);
     
    1122811228HMVMX_EXIT_DECL hmR0VmxExitVmcall(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1122911229{
    11230     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11230    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1123111231
    1123211232    VBOXSTRICTRC rcStrict = VERR_VMX_IPE_3;
     
    1127111271HMVMX_EXIT_DECL hmR0VmxExitInvlpg(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1127211272{
    11273     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11273    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1127411274    Assert(!pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging || pVCpu->hm.s.fUsingDebugLoop);
    1127511275
     
    1130011300HMVMX_EXIT_DECL hmR0VmxExitMonitor(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1130111301{
    11302     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11302    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1130311303    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1130411304    AssertRCReturn(rc, rc);
     
    1132411324HMVMX_EXIT_DECL hmR0VmxExitMwait(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1132511325{
    11326     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11326    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1132711327    int rc = hmR0VmxImportGuestState(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    1132811328    AssertRCReturn(rc, rc);
     
    1136711367     * See Intel spec. 33.15.5 "Enabling the Dual-Monitor Treatment".
    1136811368     */
    11369     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11369    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1137011370    AssertMsgFailed(("Unexpected RSM VM-exit\n"));
    1137111371    HMVMX_UNEXPECTED_EXIT_RET(pVCpu, pVmxTransient);
     
    1138711387     * See Intel spec. 25.3 "Other Causes of VM-Exits"
    1138811388     */
    11389     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11389    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1139011390    AssertMsgFailed(("Unexpected SMI VM-exit\n"));
    1139111391    HMVMX_UNEXPECTED_EXIT_RET(pVCpu, pVmxTransient);
     
    1139911399{
    1140011400    /* Same treatment as VMX_EXIT_SMI. See comment in hmR0VmxExitSmi(). */
    11401     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11401    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1140211402    AssertMsgFailed(("Unexpected IO SMI VM-exit\n"));
    1140311403    HMVMX_UNEXPECTED_EXIT_RET(pVCpu, pVmxTransient);
     
    1141511415     * See Intel spec. 25.3 "Other Causes of VM-exits".
    1141611416     */
    11417     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11417    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1141811418    AssertMsgFailed(("Unexpected SIPI VM-exit\n"));
    1141911419    HMVMX_UNEXPECTED_EXIT_RET(pVCpu, pVmxTransient);
     
    1143411434     * See Intel spec. "23.8 Restrictions on VMX operation".
    1143511435     */
    11436     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11436    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1143711437    return VINF_SUCCESS;
    1143811438}
     
    1144511445HMVMX_EXIT_DECL hmR0VmxExitTripleFault(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1144611446{
    11447     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11447    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1144811448    return VINF_EM_RESET;
    1144911449}
     
    1145511455HMVMX_EXIT_DECL hmR0VmxExitHlt(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1145611456{
    11457     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11457    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1145811458    Assert(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_HLT_EXIT);
    1145911459
     
    1148011480HMVMX_EXIT_NSRC_DECL hmR0VmxExitSetPendingXcptUD(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1148111481{
    11482     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11482    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1148311483    hmR0VmxSetPendingXcptUD(pVCpu);
    1148411484    return VINF_SUCCESS;
     
    1149111491HMVMX_EXIT_DECL hmR0VmxExitPreemptTimer(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1149211492{
    11493     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11493    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1149411494
    1149511495    /* If the preemption-timer has expired, reinitialize the preemption timer on next VM-entry. */
     
    1150911509HMVMX_EXIT_DECL hmR0VmxExitXsetbv(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1151011510{
    11511     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11511    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1151211512
    1151311513    int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1153111531HMVMX_EXIT_DECL hmR0VmxExitInvpcid(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1153211532{
    11533     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11533    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1153411534    /** @todo Use VM-exit instruction information. */
    1153511535    return VERR_EM_INTERPRETER;
     
    1163311633HMVMX_EXIT_DECL hmR0VmxExitXdtrAccess(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1163411634{
    11635     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11635    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1163611636
    1163711637    /* By default, we don't enable VMX_VMCS_CTRL_PROC_EXEC2_DESCRIPTOR_TABLE_EXIT. */
     
    1164911649HMVMX_EXIT_DECL hmR0VmxExitRdrand(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1165011650{
    11651     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11651    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1165211652
    1165311653    /* By default, we don't enable VMX_VMCS_CTRL_PROC_EXEC2_RDRAND_EXIT. */
     
    1166411664HMVMX_EXIT_DECL hmR0VmxExitRdmsr(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1166511665{
    11666     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11666    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1166711667
    1166811668    /** @todo Optimize this: We currently drag in in the whole MSR state
     
    1172311723HMVMX_EXIT_DECL hmR0VmxExitWrmsr(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1172411724{
    11725     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11725    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1172611726
    1172711727    /** @todo Optimize this: We currently drag in in the whole MSR state
     
    1185311853HMVMX_EXIT_DECL hmR0VmxExitPause(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1185411854{
    11855     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11855    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1185611856    /** @todo The guest has likely hit a contended spinlock. We might want to
    1185711857     *        poke a schedule different guest VCPU. */
     
    1186611866HMVMX_EXIT_NSRC_DECL hmR0VmxExitTprBelowThreshold(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1186711867{
    11868     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11868    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1186911869    Assert(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_USE_TPR_SHADOW);
    1187011870
     
    1189011890HMVMX_EXIT_DECL hmR0VmxExitMovCRx(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1189111891{
    11892     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     11892    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1189311893    STAM_PROFILE_ADV_START(&pVCpu->hm.s.StatExitMovCRx, y2);
    1189411894
     
    1189911899
    1190011900    VBOXSTRICTRC rcStrict;
    11901     PVM      pVM  = pVCpu->CTX_SUFF(pVM);
     11901    PVM pVM  = pVCpu->CTX_SUFF(pVM);
    1190211902    RTGCUINTPTR const uExitQualification = pVmxTransient->uExitQualification;
    1190311903    uint32_t const uAccessType           = VMX_EXIT_QUAL_CRX_ACCESS(uExitQualification);
     
    1205512055HMVMX_EXIT_DECL hmR0VmxExitIoInstr(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1205612056{
    12057     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12057    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1205812058    STAM_PROFILE_ADV_START(&pVCpu->hm.s.StatExitIO, y1);
    1205912059
     
    1221412214                /* We're playing with the host CPU state here, make sure we don't preempt or longjmp. */
    1221512215                VMMRZCallRing3Disable(pVCpu);
    12216                 HM_DISABLE_PREEMPT();
     12216                HM_DISABLE_PREEMPT(pVCpu);
    1221712217
    1221812218                bool fIsGuestDbgActive = CPUMR0DebugStateMaybeSaveGuest(pVCpu, true /* fDr6 */);
     
    1229412294HMVMX_EXIT_DECL hmR0VmxExitTaskSwitch(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1229512295{
    12296     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12296    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1229712297
    1229812298    /* Check if this task-switch occurred while delivery an event through the guest IDT. */
     
    1234512345HMVMX_EXIT_DECL hmR0VmxExitMtf(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1234612346{
    12347     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12347    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1234812348    Assert(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG);
    1234912349    pVCpu->hm.s.vmx.u32ProcCtls &= ~VMX_VMCS_CTRL_PROC_EXEC_MONITOR_TRAP_FLAG;
     
    1236012360HMVMX_EXIT_DECL hmR0VmxExitApicAccess(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1236112361{
    12362     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12362    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1236312363
    1236412364    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitApicAccess);
     
    1244012440HMVMX_EXIT_DECL hmR0VmxExitMovDRx(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1244112441{
    12442     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12442    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1244312443
    1244412444    /* We should -not- get this VM-exit if the guest's debug registers were active. */
     
    1246212462        /* We're playing with the host CPU state here, make sure we can't preempt or longjmp. */
    1246312463        VMMRZCallRing3Disable(pVCpu);
    12464         HM_DISABLE_PREEMPT();
     12464        HM_DISABLE_PREEMPT(pVCpu);
    1246512465
    1246612466        /* Save the host & load the guest debug state, restart execution of the MOV DRx instruction. */
     
    1252812528HMVMX_EXIT_DECL hmR0VmxExitEptMisconfig(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1252912529{
    12530     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12530    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1253112531    Assert(pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging);
    1253212532
     
    1261312613HMVMX_EXIT_DECL hmR0VmxExitEptViolation(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1261412614{
    12615     HMVMX_VALIDATE_EXIT_HANDLER_PARAMS();
     12615    HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1261612616    Assert(pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging);
    1261712617
     
    1269112691static int hmR0VmxExitXcptMF(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1269212692{
    12693     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     12693    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1269412694    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestMF);
    1269512695
     
    1272112721static int hmR0VmxExitXcptBP(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1272212722{
    12723     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     12723    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1272412724    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestBP);
    1272512725
     
    1275012750static int hmR0VmxExitXcptAC(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1275112751{
    12752     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     12752    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1275312753
    1275412754    /*
     
    1277112771static int hmR0VmxExitXcptDB(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1277212772{
    12773     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     12773    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1277412774    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestDB);
    1277512775
     
    1279612796         */
    1279712797        VMMRZCallRing3Disable(pVCpu);
    12798         HM_DISABLE_PREEMPT();
     12798        HM_DISABLE_PREEMPT(pVCpu);
    1279912799
    1280012800        pCtx->dr[6] &= ~X86_DR6_B_MASK;
     
    1285712857static int hmR0VmxExitXcptGP(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1285812858{
    12859     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     12859    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1286012860    STAM_COUNTER_INC(&pVCpu->hm.s.StatExitGuestGP);
    1286112861
     
    1315913159static int hmR0VmxExitXcptGeneric(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1316013160{
    13161     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     13161    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1316213162#ifndef HMVMX_ALWAYS_TRAP_ALL_XCPTS
    1316313163    AssertMsg(pVCpu->hm.s.fUsingDebugLoop || pVCpu->hm.s.vmx.RealMode.fRealOnV86Active,
     
    1319013190static int hmR0VmxExitXcptPF(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient)
    1319113191{
    13192     HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS();
     13192    HMVMX_VALIDATE_EXIT_XCPT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1319313193    PVM pVM = pVCpu->CTX_SUFF(pVM);
    1319413194    int rc = hmR0VmxReadExitQualificationVmcs(pVCpu, pVmxTransient);
Note: See TracChangeset for help on using the changeset viewer.

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