VirtualBox

Changeset 72643 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jun 21, 2018 4:02:03 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123151
Message:

VMM: Make SVM R0 code use CPUMCTX_EXTRN_xxx flags and cleanups. bugref:9193

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

Legend:

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

    r72178 r72643  
    14331433            SSMR3PutU16(pSSM,    pGstCtx->hwvirt.svm.cPauseFilterThreshold);
    14341434            SSMR3PutBool(pSSM,   pGstCtx->hwvirt.svm.fInterceptEvents);
    1435             SSMR3PutBool(pSSM,   pGstCtx->hwvirt.svm.fHMCachedVmcb);
    14361435            SSMR3PutStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState), 0 /* fFlags */,
    14371436                             g_aSvmHwvirtHostState, NULL /* pvUser */);
     
    16741673                        SSMR3GetU16(pSSM,      &pGstCtx->hwvirt.svm.cPauseFilterThreshold);
    16751674                        SSMR3GetBool(pSSM,     &pGstCtx->hwvirt.svm.fInterceptEvents);
    1676                         SSMR3GetBool(pSSM,     &pGstCtx->hwvirt.svm.fHMCachedVmcb);
    16771675                        SSMR3GetStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState),
    16781676                                         0 /* fFlags */, g_aSvmHwvirtHostState, NULL /* pvUser */);
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r72642 r72643  
    18861886                    if (CPUMIsGuestSvmCtrlInterceptSet(pVCpu, &pVCpu->cpum.GstCtx, SVM_CTRL_INTERCEPT_INTR))
    18871887                    {
     1888                        CPUM_IMPORT_EXTRN_RET(pVCpu, IEM_CPUMCTX_EXTRN_SVM_VMEXIT_MASK);
    18881889                        VBOXSTRICTRC rcStrict = IEMExecSvmVmexit(pVCpu, SVM_EXIT_INTR, 0, 0);
    18891890                        if (RT_SUCCESS(rcStrict))
     
    19041905                    /* Note: it's important to make sure the return code from TRPMR3InjectEvent isn't ignored! */
    19051906                    /** @todo this really isn't nice, should properly handle this */
     1907                    CPUM_IMPORT_EXTRN_RET(pVCpu, IEM_CPUMCTX_EXTRN_XCPT_MASK);
    19061908                    int rc = TRPMR3InjectEvent(pVM, pVCpu, TRPM_HARDWARE_INT);
    19071909                    Assert(rc != VINF_PGM_CHANGE_MODE);
     
    19261928                if (CPUMIsGuestSvmCtrlInterceptSet(pVCpu, &pVCpu->cpum.GstCtx, SVM_CTRL_INTERCEPT_VINTR))
    19271929                {
     1930                    CPUM_IMPORT_EXTRN_RET(pVCpu, IEM_CPUMCTX_EXTRN_SVM_VMEXIT_MASK);
    19281931                    VBOXSTRICTRC rcStrict = IEMExecSvmVmexit(pVCpu, SVM_EXIT_VINTR, 0, 0);
    19291932                    if (RT_SUCCESS(rcStrict))
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r72598 r72643  
    34913491        {
    34923492            PCSVMNESTEDVMCBCACHE pVmcbNstGstCache = &pVM->aCpus[i].hm.s.svm.NstGstVmcbCache;
    3493             rc  = SSMR3PutU16(pSSM,  pVmcbNstGstCache->u16InterceptRdCRx);
     3493            rc  = SSMR3PutBool(pSSM, pVmcbNstGstCache->fCacheValid);
     3494            rc |= SSMR3PutU16(pSSM,  pVmcbNstGstCache->u16InterceptRdCRx);
    34943495            rc |= SSMR3PutU16(pSSM,  pVmcbNstGstCache->u16InterceptWrCRx);
    34953496            rc |= SSMR3PutU16(pSSM,  pVmcbNstGstCache->u16InterceptRdDRx);
     
    35763577            {
    35773578                PSVMNESTEDVMCBCACHE pVmcbNstGstCache = &pVM->aCpus[i].hm.s.svm.NstGstVmcbCache;
    3578                 rc  = SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdCRx);
     3579                rc  = SSMR3GetBool(pSSM, &pVmcbNstGstCache->fCacheValid);
     3580                rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdCRx);
    35793581                rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptWrCRx);
    35803582                rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdDRx);
     
    36873689
    36883690/**
    3689  * Displays the guest VM-exit history.
     3691 * Displays HM info.
    36903692 *
    36913693 * @param   pVM         The cross context VM structure.
     
    37613763        && pVM->cpum.ro.GuestFeatures.fSvm)
    37623764    {
    3763         PCCPUMCTX            pCtx = CPUMQueryGuestCtxPtr(pVCpu);
    37643765        PCSVMNESTEDVMCBCACHE pVmcbNstGstCache = &pVCpu->hm.s.svm.NstGstVmcbCache;
    37653766        pHlp->pfnPrintf(pHlp, "CPU[%u]: HM SVM nested-guest VMCB cache\n", pVCpu->idCpu);
    3766         pHlp->pfnPrintf(pHlp, "  fHMCachedVmcb           = %#RTbool\n", pCtx->hwvirt.svm.fHMCachedVmcb);
     3767        pHlp->pfnPrintf(pHlp, "  fCacheValid             = %#RTbool\n", pVmcbNstGstCache->fCacheValid);
    37673768        pHlp->pfnPrintf(pHlp, "  u16InterceptRdCRx       = %#RX16\n",   pVmcbNstGstCache->u16InterceptRdCRx);
    37683769        pHlp->pfnPrintf(pHlp, "  u16InterceptWrCRx       = %#RX16\n",   pVmcbNstGstCache->u16InterceptWrCRx);
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