VirtualBox

Changeset 70266 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Dec 21, 2017 11:43:15 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
119861
Message:

VMM/HM: Added dumping of SVM VMCB state save area.

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

Legend:

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

    r69900 r70266  
    22612261        pHlp->pfnPrintf(pHlp, "  GCPhysVmcb                 = %#RGp\n",     pCtx->hwvirt.svm.GCPhysVmcb);
    22622262        pHlp->pfnPrintf(pHlp, "  VmcbCtrl:\n");
    2263         HMR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.pVmcbR3->ctrl, "    " /* pszPrefix */);
    2264         /** @todo HMR3InfoSvmVmcbStateSave. */
     2263        HMR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.pVmcbR3->ctrl,       "    " /* pszPrefix */);
     2264        HMR3InfoSvmVmcbStateSave(pHlp, &pCtx->hwvirt.svm.pVmcbR3->guest, "    " /* pszPrefix */);
    22652265        pHlp->pfnPrintf(pHlp, "  HostState:\n");
    22662266        pHlp->pfnPrintf(pHlp, "    uEferMsr                   = %#RX64\n",  pCtx->hwvirt.svm.HostState.uEferMsr);
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r70264 r70266  
    36113611
    36123612/**
    3613  * Displays SVM VMCB controls.
     3613 * Displays SVM VMCB control area.
    36143614 *
    36153615 * @param   pHlp        The info helper functions.
     
    36843684}
    36853685
     3686
     3687/**
     3688 * Helper for dumping the SVM VMCB selector registers.
     3689 *
     3690 * @param   pHlp        The info helper functions.
     3691 * @param   pSel        Pointer to the SVM selector register.
     3692 * @param   pszName     Name of the selector.
     3693 * @param   pszPrefix   Caller specified string prefix.
     3694 */
     3695DECLINLINE(void) hmR3InfoSvmVmcbStateSaveSelReg(PCDBGFINFOHLP pHlp, PCSVMSELREG pSel, const char *pszName, const char *pszPrefix)
     3696{
     3697    pHlp->pfnPrintf(pHlp, "%s%s\n",                                     pszPrefix, pszName);
     3698    pHlp->pfnPrintf(pHlp, "%s  u16Sel                     = %#RX16\n",  pszPrefix, pSel->u16Sel);
     3699    pHlp->pfnPrintf(pHlp, "%s  u16Attr                    = %#RX16\n",  pszPrefix, pSel->u16Attr);
     3700    pHlp->pfnPrintf(pHlp, "%s  u32Limit                   = %#RX32\n",  pszPrefix, pSel->u32Limit);
     3701    pHlp->pfnPrintf(pHlp, "%s  u64Base                    = %#RX64\n",  pszPrefix, pSel->u64Base);
     3702}
     3703
     3704
     3705/**
     3706 * Helper for dumping the SVM VMCB GDTR/IDTR registers.
     3707 *
     3708 * @param   pHlp        The info helper functions.
     3709 * @param   pSel        Pointer to the descriptor table register.
     3710 * @param   pszName     Name of the descriptor table register.
     3711 * @param   pszPrefix   Caller specified string prefix.
     3712 */
     3713DECLINLINE(void) hmR3InfoSvmVmcbStateXdtr(PCDBGFINFOHLP pHlp, PCSVMXDTR pXdtr, const char *pszName, const char *pszPrefix)
     3714{
     3715    pHlp->pfnPrintf(pHlp, "%s%s\n",                                     pszPrefix, pszName);
     3716    pHlp->pfnPrintf(pHlp, "%s  u32Limit                   = %#RX32\n",  pszPrefix, pXdtr->u32Limit);
     3717    pHlp->pfnPrintf(pHlp, "%s  u64Base                    = %#RX64\n",  pszPrefix, pXdtr->u64Base);
     3718}
     3719
     3720
     3721/**
     3722 * Displays SVM VMCB state-save area.
     3723 *
     3724 * @param   pHlp            The info helper functions.
     3725 * @param   pVmcbStateSave  Pointer to a SVM VMCB controls area.
     3726 * @param   pszPrefix       Caller specified string prefix.
     3727 */
     3728VMMR3_INT_DECL(void) HMR3InfoSvmVmcbStateSave(PCDBGFINFOHLP pHlp, PCSVMVMCBSTATESAVE pVmcbStateSave, const char *pszPrefix)
     3729{
     3730    AssertReturnVoid(pHlp);
     3731    AssertReturnVoid(pVmcbStateSave);
     3732
     3733    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->ES, "ES",     pszPrefix);
     3734    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->CS, "CS",     pszPrefix);
     3735    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->SS, "SS",     pszPrefix);
     3736    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->DS, "DS",     pszPrefix);
     3737    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->FS, "FS",     pszPrefix);
     3738    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->GS, "GS",     pszPrefix);
     3739    hmR3InfoSvmVmcbStateXdtr(pHlp, &pVmcbStateSave->GDTR, "GDTR",       pszPrefix);
     3740    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->LDTR, "LDTR", pszPrefix);
     3741    hmR3InfoSvmVmcbStateXdtr(pHlp, &pVmcbStateSave->IDTR, "IDTR",       pszPrefix);
     3742    hmR3InfoSvmVmcbStateSaveSelReg(pHlp, &pVmcbStateSave->TR, "TR",     pszPrefix);
     3743    pHlp->pfnPrintf(pHlp, "%su8CPL                      = %u\n",        pszPrefix, pVmcbStateSave->u8CPL);
     3744    pHlp->pfnPrintf(pHlp, "%su64EFER                    = %#RX64\n",    pszPrefix, pVmcbStateSave->u64EFER);
     3745    pHlp->pfnPrintf(pHlp, "%su64CR4                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64CR4);
     3746    pHlp->pfnPrintf(pHlp, "%su64CR3                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64CR3);
     3747    pHlp->pfnPrintf(pHlp, "%su64CR0                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64CR0);
     3748    pHlp->pfnPrintf(pHlp, "%su64DR7                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64DR7);
     3749    pHlp->pfnPrintf(pHlp, "%su64DR6                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64DR6);
     3750    pHlp->pfnPrintf(pHlp, "%su64RFlags                  = %#RX64\n",    pszPrefix, pVmcbStateSave->u64RFlags);
     3751    pHlp->pfnPrintf(pHlp, "%su64RIP                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64RIP);
     3752    pHlp->pfnPrintf(pHlp, "%su64RSP                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64RSP);
     3753    pHlp->pfnPrintf(pHlp, "%su64RAX                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64RAX);
     3754    pHlp->pfnPrintf(pHlp, "%su64STAR                    = %#RX64\n",    pszPrefix, pVmcbStateSave->u64STAR);
     3755    pHlp->pfnPrintf(pHlp, "%su64LSTAR                   = %#RX64\n",    pszPrefix, pVmcbStateSave->u64LSTAR);
     3756    pHlp->pfnPrintf(pHlp, "%su64CSTAR                   = %#RX64\n",    pszPrefix, pVmcbStateSave->u64CSTAR);
     3757    pHlp->pfnPrintf(pHlp, "%su64SFMASK                  = %#RX64\n",    pszPrefix, pVmcbStateSave->u64SFMASK);
     3758    pHlp->pfnPrintf(pHlp, "%su64KernelGSBase            = %#RX64\n",    pszPrefix, pVmcbStateSave->u64KernelGSBase);
     3759    pHlp->pfnPrintf(pHlp, "%su64SysEnterCS              = %#RX64\n",    pszPrefix, pVmcbStateSave->u64SysEnterCS);
     3760    pHlp->pfnPrintf(pHlp, "%su64SysEnterEIP             = %#RX64\n",    pszPrefix, pVmcbStateSave->u64SysEnterEIP);
     3761    pHlp->pfnPrintf(pHlp, "%su64SysEnterESP             = %#RX64\n",    pszPrefix, pVmcbStateSave->u64SysEnterESP);
     3762    pHlp->pfnPrintf(pHlp, "%su64CR2                     = %#RX64\n",    pszPrefix, pVmcbStateSave->u64CR2);
     3763    pHlp->pfnPrintf(pHlp, "%su64GPAT                    = %#RX64\n",    pszPrefix, pVmcbStateSave->u64GPAT);
     3764    pHlp->pfnPrintf(pHlp, "%su64DBGCTL                  = %#RX64\n",    pszPrefix, pVmcbStateSave->u64DBGCTL);
     3765    pHlp->pfnPrintf(pHlp, "%su64BR_FROM                 = %#RX64\n",    pszPrefix, pVmcbStateSave->u64BR_FROM);
     3766    pHlp->pfnPrintf(pHlp, "%su64BR_TO                   = %#RX64\n",    pszPrefix, pVmcbStateSave->u64BR_TO);
     3767    pHlp->pfnPrintf(pHlp, "%su64LASTEXCPFROM            = %#RX64\n",    pszPrefix, pVmcbStateSave->u64LASTEXCPFROM);
     3768    pHlp->pfnPrintf(pHlp, "%su64LASTEXCPTO              = %#RX64\n",    pszPrefix, pVmcbStateSave->u64LASTEXCPTO);
     3769}
     3770
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