VirtualBox

Changeset 48329 in vbox


Ignore:
Timestamp:
Sep 5, 2013 10:47:36 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
88757
Message:

VMM: nits.

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

Legend:

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

    r48309 r48329  
    5757#define HMSVM_EXIT_DECL                 static int
    5858
    59 
    6059/** @name Segment attribute conversion between CPU and AMD-V VMCB format.
    6160 *
     
    7069#define HMSVM_VMCB_2_CPU_SEG_ATTR(a)       ( ((a) & 0xff) | (((a) & 0x0f00) << 4) )
    7170/** @} */
    72 
    7371
    7472/** @name Macros for loading, storing segment registers to/from the VMCB.
     
    9795/** @} */
    9896
    99 
    10097/** Macro for checking and returning from the using function for
    10198 * \#VMEXIT intercepts that maybe caused during delivering of another
     
    137134#define HMSVM_CONTRIBUTORY_XCPT_MASK  (  RT_BIT(X86_XCPT_GP) | RT_BIT(X86_XCPT_NP) | RT_BIT(X86_XCPT_SS) | RT_BIT(X86_XCPT_TS) \
    138135                                       | RT_BIT(X86_XCPT_DE))
    139 
    140136
    141137/** @name VMCB Clean Bits.
     
    220216/** @}  */
    221217
    222 
    223218/**
    224219 * MSRPM (MSR permission bitmap) read permissions (for guest RDMSR).
     
    243238} SVMMSREXITWRITE;
    244239
     240/**
     241 * SVM VM-exit handler.
     242 *
     243 * @returns VBox status code.
     244 * @param   pVCpu           Pointer to the VMCPU.
     245 * @param   pMixedCtx       Pointer to the guest-CPU context.
     246 * @param   pSvmTransient   Pointer to the SVM-transient structure.
     247 */
     248typedef int FNSVMEXITHANDLER(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    245249
    246250/*******************************************************************************
     
    251255static void hmR0SvmLeave(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx);
    252256
    253 HMSVM_EXIT_DECL hmR0SvmExitIntr(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    254 HMSVM_EXIT_DECL hmR0SvmExitWbinvd(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    255 HMSVM_EXIT_DECL hmR0SvmExitInvd(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    256 HMSVM_EXIT_DECL hmR0SvmExitCpuid(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    257 HMSVM_EXIT_DECL hmR0SvmExitRdtsc(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    258 HMSVM_EXIT_DECL hmR0SvmExitRdtscp(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    259 HMSVM_EXIT_DECL hmR0SvmExitRdpmc(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    260 HMSVM_EXIT_DECL hmR0SvmExitInvlpg(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    261 HMSVM_EXIT_DECL hmR0SvmExitHlt(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    262 HMSVM_EXIT_DECL hmR0SvmExitMonitor(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    263 HMSVM_EXIT_DECL hmR0SvmExitMwait(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    264 HMSVM_EXIT_DECL hmR0SvmExitShutdown(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    265 HMSVM_EXIT_DECL hmR0SvmExitReadCRx(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    266 HMSVM_EXIT_DECL hmR0SvmExitWriteCRx(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    267 HMSVM_EXIT_DECL hmR0SvmExitSetPendingXcptUD(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    268 HMSVM_EXIT_DECL hmR0SvmExitMsr(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    269 HMSVM_EXIT_DECL hmR0SvmExitReadDRx(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    270 HMSVM_EXIT_DECL hmR0SvmExitWriteDRx(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    271 HMSVM_EXIT_DECL hmR0SvmExitIOInstr(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    272 HMSVM_EXIT_DECL hmR0SvmExitNestedPF(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    273 HMSVM_EXIT_DECL hmR0SvmExitVIntr(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    274 HMSVM_EXIT_DECL hmR0SvmExitTaskSwitch(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    275 HMSVM_EXIT_DECL hmR0SvmExitVmmCall(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    276 HMSVM_EXIT_DECL hmR0SvmExitXcptPF(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    277 HMSVM_EXIT_DECL hmR0SvmExitXcptNM(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    278 HMSVM_EXIT_DECL hmR0SvmExitXcptMF(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
    279 HMSVM_EXIT_DECL hmR0SvmExitXcptDB(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient);
     257/** @name VM-exit handlers.
     258 * @{
     259 */
     260static FNSVMEXITHANDLER hmR0SvmExitIntr;
     261static FNSVMEXITHANDLER hmR0SvmExitWbinvd;
     262static FNSVMEXITHANDLER hmR0SvmExitInvd;
     263static FNSVMEXITHANDLER hmR0SvmExitCpuid;
     264static FNSVMEXITHANDLER hmR0SvmExitRdtsc;
     265static FNSVMEXITHANDLER hmR0SvmExitRdtscp;
     266static FNSVMEXITHANDLER hmR0SvmExitRdpmc;
     267static FNSVMEXITHANDLER hmR0SvmExitInvlpg;
     268static FNSVMEXITHANDLER hmR0SvmExitHlt;
     269static FNSVMEXITHANDLER hmR0SvmExitMonitor;
     270static FNSVMEXITHANDLER hmR0SvmExitMwait;
     271static FNSVMEXITHANDLER hmR0SvmExitShutdown;
     272static FNSVMEXITHANDLER hmR0SvmExitReadCRx;
     273static FNSVMEXITHANDLER hmR0SvmExitWriteCRx;
     274static FNSVMEXITHANDLER hmR0SvmExitSetPendingXcptUD;
     275static FNSVMEXITHANDLER hmR0SvmExitMsr;
     276static FNSVMEXITHANDLER hmR0SvmExitReadDRx;
     277static FNSVMEXITHANDLER hmR0SvmExitWriteDRx;
     278static FNSVMEXITHANDLER hmR0SvmExitIOInstr;
     279static FNSVMEXITHANDLER hmR0SvmExitNestedPF;
     280static FNSVMEXITHANDLER hmR0SvmExitVIntr;
     281static FNSVMEXITHANDLER hmR0SvmExitTaskSwitch;
     282static FNSVMEXITHANDLER hmR0SvmExitVmmCall;
     283static FNSVMEXITHANDLER hmR0SvmExitXcptPF;
     284static FNSVMEXITHANDLER hmR0SvmExitXcptNM;
     285static FNSVMEXITHANDLER hmR0SvmExitXcptMF;
     286static FNSVMEXITHANDLER hmR0SvmExitXcptDB;
     287/** @} */
    280288
    281289DECLINLINE(int) hmR0SvmHandleExit(PVMCPU pVCpu, PCPUMCTX pMixedCtx, PSVMTRANSIENT pSvmTransient);
    282 
    283290
    284291/*******************************************************************************
     
    10851092        if (!pVM->hm.s.fNestedPaging)
    10861093        {
    1087             u64GuestCR0 |= X86_CR0_PG;  /* When Nested Paging is not available, use shadow page tables. */
    1088             u64GuestCR0 |= X86_CR0_WP;  /* Guest CPL 0 writes to its read-only pages should cause a #PF VM-exit. */
     1094            u64GuestCR0 |= X86_CR0_PG;     /* When Nested Paging is not available, use shadow page tables. */
     1095            u64GuestCR0 |= X86_CR0_WP;     /* Guest CPL 0 writes to its read-only pages should cause a #PF VM-exit. */
    10891096        }
    10901097
     
    14971504    AssertRCReturn(rc, rc);
    14981505
    1499     /** Assume that we need to trap all TPR accesses and thus need not check on
    1500      *  every #VMEXIT if we should update the TPR. */
     1506    /* Assume that we need to trap all TPR accesses and thus need not check on
     1507       every #VMEXIT if we should update the TPR. */
    15011508    Assert(pVmcb->ctrl.IntCtrl.n.u1VIrqMasking);
    15021509    pVCpu->hm.s.svm.fSyncVTpr = false;
     
    16151622            PVM         pVM  = pVCpu->CTX_SUFF(pVM);
    16161623            PCPUMCTX    pCtx = CPUMQueryGuestCtxPtr(pVCpu);
    1617             VMMRZCallRing3Disable(pVCpu);                        /* No longjmps (log-flush, locks) in this fragile context. */
     1624
     1625            /* No longjmps (log-flush, locks) in this fragile context. */
     1626            VMMRZCallRing3Disable(pVCpu);
    16181627
    16191628            if (!pVCpu->hm.s.fLeaveDone)
     
    16231632            }
    16241633
    1625             int rc = HMR0LeaveCpu(pVCpu);                         /* Leave HM context, takes care of local init (term). */
     1634            /* Leave HM context, takes care of local init (term). */
     1635            int rc = HMR0LeaveCpu(pVCpu);
    16261636            AssertRC(rc); NOREF(rc);
    16271637
    1628             VMMRZCallRing3Enable(pVCpu);                         /* Restore longjmp state. */
     1638            /* Restore longjmp state. */
     1639            VMMRZCallRing3Enable(pVCpu);
    16291640            STAM_COUNTER_INC(&pVCpu->hm.s.StatPreemptPreempting);
    16301641            break;
     
    16371648            VMCPU_ASSERT_EMT(pVCpu);
    16381649
    1639             VMMRZCallRing3Disable(pVCpu);                        /* No longjmps (log-flush, locks) in this fragile context. */
     1650            /* No longjmps (log-flush, locks) in this fragile context. */
     1651            VMMRZCallRing3Disable(pVCpu);
    16401652
    16411653            /*
     
    16481660
    16491661            pVCpu->hm.s.fLeaveDone = false;
    1650             VMMRZCallRing3Enable(pVCpu);                        /* Restore longjmp state. */
     1662
     1663            /* Restore longjmp state. */
     1664            VMMRZCallRing3Enable(pVCpu);
    16511665            break;
    16521666        }
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r48326 r48329  
    293293
    294294/**
    295  * VM-exit handler.
     295 * VMX VM-exit handler.
    296296 *
    297297 * @returns VBox status code.
     
    303303 */
    304304#ifndef HMVMX_USE_FUNCTION_TABLE
    305 typedef int FNVMEXITHANDLER(PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient);
     305typedef int FNVMXEXITHANDLER(PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient);
    306306#else
    307 typedef DECLCALLBACK(int) FNVMEXITHANDLER(PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient);
     307typedef DECLCALLBACK(int) FNVMXEXITHANDLER(PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient);
    308308/** Pointer to VM-exit handler. */
    309 typedef FNVMEXITHANDLER *PFNVMEXITHANDLER;
     309typedef FNVMXEXITHANDLER *PFNVMXEXITHANDLER;
    310310#endif
    311311
     
    332332 * @{
    333333 */
    334 static FNVMEXITHANDLER hmR0VmxExitXcptOrNmi;
    335 static FNVMEXITHANDLER hmR0VmxExitExtInt;
    336 static FNVMEXITHANDLER hmR0VmxExitTripleFault;
    337 static FNVMEXITHANDLER hmR0VmxExitInitSignal;
    338 static FNVMEXITHANDLER hmR0VmxExitSipi;
    339 static FNVMEXITHANDLER hmR0VmxExitIoSmi;
    340 static FNVMEXITHANDLER hmR0VmxExitSmi;
    341 static FNVMEXITHANDLER hmR0VmxExitIntWindow;
    342 static FNVMEXITHANDLER hmR0VmxExitNmiWindow;
    343 static FNVMEXITHANDLER hmR0VmxExitTaskSwitch;
    344 static FNVMEXITHANDLER hmR0VmxExitCpuid;
    345 static FNVMEXITHANDLER hmR0VmxExitGetsec;
    346 static FNVMEXITHANDLER hmR0VmxExitHlt;
    347 static FNVMEXITHANDLER hmR0VmxExitInvd;
    348 static FNVMEXITHANDLER hmR0VmxExitInvlpg;
    349 static FNVMEXITHANDLER hmR0VmxExitRdpmc;
    350 static FNVMEXITHANDLER hmR0VmxExitRdtsc;
    351 static FNVMEXITHANDLER hmR0VmxExitRsm;
    352 static FNVMEXITHANDLER hmR0VmxExitSetPendingXcptUD;
    353 static FNVMEXITHANDLER hmR0VmxExitMovCRx;
    354 static FNVMEXITHANDLER hmR0VmxExitMovDRx;
    355 static FNVMEXITHANDLER hmR0VmxExitIoInstr;
    356 static FNVMEXITHANDLER hmR0VmxExitRdmsr;
    357 static FNVMEXITHANDLER hmR0VmxExitWrmsr;
    358 static FNVMEXITHANDLER hmR0VmxExitErrInvalidGuestState;
    359 static FNVMEXITHANDLER hmR0VmxExitErrMsrLoad;
    360 static FNVMEXITHANDLER hmR0VmxExitErrUndefined;
    361 static FNVMEXITHANDLER hmR0VmxExitMwait;
    362 static FNVMEXITHANDLER hmR0VmxExitMtf;
    363 static FNVMEXITHANDLER hmR0VmxExitMonitor;
    364 static FNVMEXITHANDLER hmR0VmxExitPause;
    365 static FNVMEXITHANDLER hmR0VmxExitErrMachineCheck;
    366 static FNVMEXITHANDLER hmR0VmxExitTprBelowThreshold;
    367 static FNVMEXITHANDLER hmR0VmxExitApicAccess;
    368 static FNVMEXITHANDLER hmR0VmxExitXdtrAccess;
    369 static FNVMEXITHANDLER hmR0VmxExitXdtrAccess;
    370 static FNVMEXITHANDLER hmR0VmxExitEptViolation;
    371 static FNVMEXITHANDLER hmR0VmxExitEptMisconfig;
    372 static FNVMEXITHANDLER hmR0VmxExitRdtscp;
    373 static FNVMEXITHANDLER hmR0VmxExitPreemptTimer;
    374 static FNVMEXITHANDLER hmR0VmxExitWbinvd;
    375 static FNVMEXITHANDLER hmR0VmxExitXsetbv;
    376 static FNVMEXITHANDLER hmR0VmxExitRdrand;
    377 static FNVMEXITHANDLER hmR0VmxExitInvpcid;
     334static FNVMXEXITHANDLER hmR0VmxExitXcptOrNmi;
     335static FNVMXEXITHANDLER hmR0VmxExitExtInt;
     336static FNVMXEXITHANDLER hmR0VmxExitTripleFault;
     337static FNVMXEXITHANDLER hmR0VmxExitInitSignal;
     338static FNVMXEXITHANDLER hmR0VmxExitSipi;
     339static FNVMXEXITHANDLER hmR0VmxExitIoSmi;
     340static FNVMXEXITHANDLER hmR0VmxExitSmi;
     341static FNVMXEXITHANDLER hmR0VmxExitIntWindow;
     342static FNVMXEXITHANDLER hmR0VmxExitNmiWindow;
     343static FNVMXEXITHANDLER hmR0VmxExitTaskSwitch;
     344static FNVMXEXITHANDLER hmR0VmxExitCpuid;
     345static FNVMXEXITHANDLER hmR0VmxExitGetsec;
     346static FNVMXEXITHANDLER hmR0VmxExitHlt;
     347static FNVMXEXITHANDLER hmR0VmxExitInvd;
     348static FNVMXEXITHANDLER hmR0VmxExitInvlpg;
     349static FNVMXEXITHANDLER hmR0VmxExitRdpmc;
     350static FNVMXEXITHANDLER hmR0VmxExitRdtsc;
     351static FNVMXEXITHANDLER hmR0VmxExitRsm;
     352static FNVMXEXITHANDLER hmR0VmxExitSetPendingXcptUD;
     353static FNVMXEXITHANDLER hmR0VmxExitMovCRx;
     354static FNVMXEXITHANDLER hmR0VmxExitMovDRx;
     355static FNVMXEXITHANDLER hmR0VmxExitIoInstr;
     356static FNVMXEXITHANDLER hmR0VmxExitRdmsr;
     357static FNVMXEXITHANDLER hmR0VmxExitWrmsr;
     358static FNVMXEXITHANDLER hmR0VmxExitErrInvalidGuestState;
     359static FNVMXEXITHANDLER hmR0VmxExitErrMsrLoad;
     360static FNVMXEXITHANDLER hmR0VmxExitErrUndefined;
     361static FNVMXEXITHANDLER hmR0VmxExitMwait;
     362static FNVMXEXITHANDLER hmR0VmxExitMtf;
     363static FNVMXEXITHANDLER hmR0VmxExitMonitor;
     364static FNVMXEXITHANDLER hmR0VmxExitPause;
     365static FNVMXEXITHANDLER hmR0VmxExitErrMachineCheck;
     366static FNVMXEXITHANDLER hmR0VmxExitTprBelowThreshold;
     367static FNVMXEXITHANDLER hmR0VmxExitApicAccess;
     368static FNVMXEXITHANDLER hmR0VmxExitXdtrAccess;
     369static FNVMXEXITHANDLER hmR0VmxExitXdtrAccess;
     370static FNVMXEXITHANDLER hmR0VmxExitEptViolation;
     371static FNVMXEXITHANDLER hmR0VmxExitEptMisconfig;
     372static FNVMXEXITHANDLER hmR0VmxExitRdtscp;
     373static FNVMXEXITHANDLER hmR0VmxExitPreemptTimer;
     374static FNVMXEXITHANDLER hmR0VmxExitWbinvd;
     375static FNVMXEXITHANDLER hmR0VmxExitXsetbv;
     376static FNVMXEXITHANDLER hmR0VmxExitRdrand;
     377static FNVMXEXITHANDLER hmR0VmxExitInvpcid;
    378378/** @} */
    379379
     
    395395 * VMX_EXIT dispatch table.
    396396 */
    397 static const PFNVMEXITHANDLER g_apfnVMExitHandlers[VMX_EXIT_MAX + 1] =
     397static const PFNVMXEXITHANDLER g_apfnVMExitHandlers[VMX_EXIT_MAX + 1] =
    398398{
    399399 /* 00  VMX_EXIT_XCPT_OR_NMI             */  hmR0VmxExitXcptOrNmi,
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