VirtualBox

Changeset 81766 in vbox for trunk/src/VBox/VMM/VMMR3/HM.cpp


Ignore:
Timestamp:
Nov 11, 2019 4:10:19 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134557
Message:

VMM: Added SSM_GET_ENUM32_RET and made the VMM code use it and the volatile getters. bugref:9218

File:
1 edited

Legend:

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

    r81619 r81766  
    30813081            {
    30823082                PSVMNESTEDVMCBCACHE pVmcbNstGstCache = &pVCpu->hm.s.svm.NstGstVmcbCache;
    3083                 rc  = SSMR3GetBool(pSSM, &pVmcbNstGstCache->fCacheValid);
    3084                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdCRx);
    3085                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptWrCRx);
    3086                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdDRx);
    3087                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptWrDRx);
    3088                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16PauseFilterThreshold);
    3089                 rc |= SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16PauseFilterCount);
    3090                 rc |= SSMR3GetU32(pSSM,  &pVmcbNstGstCache->u32InterceptXcpt);
    3091                 rc |= SSMR3GetU64(pSSM,  &pVmcbNstGstCache->u64InterceptCtrl);
    3092                 rc |= SSMR3GetU64(pSSM,  &pVmcbNstGstCache->u64TSCOffset);
    3093                 rc |= SSMR3GetBool(pSSM, &pVmcbNstGstCache->fVIntrMasking);
    3094                 rc |= SSMR3GetBool(pSSM, &pVmcbNstGstCache->fNestedPaging);
    3095                 rc |= SSMR3GetBool(pSSM, &pVmcbNstGstCache->fLbrVirt);
     3083                SSMR3GetBool(pSSM, &pVmcbNstGstCache->fCacheValid);
     3084                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdCRx);
     3085                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptWrCRx);
     3086                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptRdDRx);
     3087                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16InterceptWrDRx);
     3088                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16PauseFilterThreshold);
     3089                SSMR3GetU16(pSSM,  &pVmcbNstGstCache->u16PauseFilterCount);
     3090                SSMR3GetU32(pSSM,  &pVmcbNstGstCache->u32InterceptXcpt);
     3091                SSMR3GetU64(pSSM,  &pVmcbNstGstCache->u64InterceptCtrl);
     3092                SSMR3GetU64(pSSM,  &pVmcbNstGstCache->u64TSCOffset);
     3093                SSMR3GetBool(pSSM, &pVmcbNstGstCache->fVIntrMasking);
     3094                SSMR3GetBool(pSSM, &pVmcbNstGstCache->fNestedPaging);
     3095                rc = SSMR3GetBool(pSSM, &pVmcbNstGstCache->fLbrVirt);
    30963096                AssertRCReturn(rc, rc);
    30973097            }
     
    31003100        {
    31013101            /* Pending HM event (obsolete for a long time since TPRM holds the info.) */
    3102             rc  = SSMR3GetU32(pSSM, &pVCpu->hm.s.Event.fPending);
    3103             rc |= SSMR3GetU32(pSSM, &pVCpu->hm.s.Event.u32ErrCode);
    3104             rc |= SSMR3GetU64(pSSM, &pVCpu->hm.s.Event.u64IntInfo);
     3102            SSMR3GetU32(pSSM, &pVCpu->hm.s.Event.fPending);
     3103            SSMR3GetU32(pSSM, &pVCpu->hm.s.Event.u32ErrCode);
     3104            SSMR3GetU64(pSSM, &pVCpu->hm.s.Event.u64IntInfo);
    31053105
    31063106            /* VMX fWasInRealMode related data. */
    31073107            uint32_t uDummy;
    3108             rc |= SSMR3GetU32(pSSM, &uDummy);   AssertRCReturn(rc, rc);
    3109             rc |= SSMR3GetU32(pSSM, &uDummy);   AssertRCReturn(rc, rc);
    3110             rc |= SSMR3GetU32(pSSM, &uDummy);   AssertRCReturn(rc, rc);
     3108            SSMR3GetU32(pSSM, &uDummy);
     3109            SSMR3GetU32(pSSM, &uDummy);
     3110            rc = SSMR3GetU32(pSSM, &uDummy);
    31113111            AssertRCReturn(rc, rc);
    31123112        }
     
    31183118    if (uVersion >= HM_SAVED_STATE_VERSION_TPR_PATCHING)
    31193119    {
    3120         rc  = SSMR3GetGCPtr(pSSM, &pVM->hm.s.pGuestPatchMem);
    3121         rc |= SSMR3GetGCPtr(pSSM, &pVM->hm.s.pFreeGuestPatchMem);
    3122         rc |= SSMR3GetU32(pSSM, &pVM->hm.s.cbGuestPatchMem);
     3120        SSMR3GetGCPtr(pSSM, &pVM->hm.s.pGuestPatchMem);
     3121        SSMR3GetGCPtr(pSSM, &pVM->hm.s.pFreeGuestPatchMem);
     3122        SSMR3GetU32(pSSM, &pVM->hm.s.cbGuestPatchMem);
    31233123
    31243124        /* Fetch all TPR patch records. */
    3125         rc |= SSMR3GetU32(pSSM, &pVM->hm.s.cPatches);
     3125        rc = SSMR3GetU32(pSSM, &pVM->hm.s.cPatches);
    31263126        AssertRCReturn(rc, rc);
    31273127        for (uint32_t i = 0; i < pVM->hm.s.cPatches; i++)
    31283128        {
    31293129            PHMTPRPATCH pPatch = &pVM->hm.s.aPatches[i];
    3130             rc  = SSMR3GetU32(pSSM, &pPatch->Core.Key);
    3131             rc |= SSMR3GetMem(pSSM, pPatch->aOpcode, sizeof(pPatch->aOpcode));
    3132             rc |= SSMR3GetU32(pSSM, &pPatch->cbOp);
    3133             rc |= SSMR3GetMem(pSSM, pPatch->aNewOpcode, sizeof(pPatch->aNewOpcode));
    3134             rc |= SSMR3GetU32(pSSM, &pPatch->cbNewOp);
    3135             rc |= SSMR3GetU32(pSSM, (uint32_t *)&pPatch->enmType);
     3130            SSMR3GetU32(pSSM, &pPatch->Core.Key);
     3131            SSMR3GetMem(pSSM, pPatch->aOpcode, sizeof(pPatch->aOpcode));
     3132            SSMR3GetU32(pSSM, &pPatch->cbOp);
     3133            SSMR3GetMem(pSSM, pPatch->aNewOpcode, sizeof(pPatch->aNewOpcode));
     3134            SSMR3GetU32(pSSM, &pPatch->cbNewOp);
     3135            SSM_GET_ENUM32_RET(pSSM, pPatch->enmType, HMTPRINSTR);
    31363136
    31373137            if (pPatch->enmType == HMTPRINSTR_JUMP_REPLACEMENT)
     
    31393139            Assert(pPatch->enmType == HMTPRINSTR_JUMP_REPLACEMENT || pVM->hm.s.fTPRPatchingActive == false);
    31403140
    3141             rc |= SSMR3GetU32(pSSM, &pPatch->uSrcOperand);
    3142             rc |= SSMR3GetU32(pSSM, &pPatch->uDstOperand);
    3143             rc |= SSMR3GetU32(pSSM, &pPatch->cFaults);
    3144             rc |= SSMR3GetU32(pSSM, &pPatch->pJumpTarget);
     3141            SSMR3GetU32(pSSM, &pPatch->uSrcOperand);
     3142            SSMR3GetU32(pSSM, &pPatch->uDstOperand);
     3143            SSMR3GetU32(pSSM, &pPatch->cFaults);
     3144            rc = SSMR3GetU32(pSSM, &pPatch->pJumpTarget);
    31453145            AssertRCReturn(rc, rc);
    31463146
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