Changeset 81766 in vbox for trunk/src/VBox/VMM/VMMR3/HM.cpp
- Timestamp:
- Nov 11, 2019 4:10:19 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 134557
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/HM.cpp
r81619 r81766 3081 3081 { 3082 3082 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); 3096 3096 AssertRCReturn(rc, rc); 3097 3097 } … … 3100 3100 { 3101 3101 /* 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); 3105 3105 3106 3106 /* VMX fWasInRealMode related data. */ 3107 3107 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); 3111 3111 AssertRCReturn(rc, rc); 3112 3112 } … … 3118 3118 if (uVersion >= HM_SAVED_STATE_VERSION_TPR_PATCHING) 3119 3119 { 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); 3123 3123 3124 3124 /* Fetch all TPR patch records. */ 3125 rc |= SSMR3GetU32(pSSM, &pVM->hm.s.cPatches);3125 rc = SSMR3GetU32(pSSM, &pVM->hm.s.cPatches); 3126 3126 AssertRCReturn(rc, rc); 3127 3127 for (uint32_t i = 0; i < pVM->hm.s.cPatches; i++) 3128 3128 { 3129 3129 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); 3136 3136 3137 3137 if (pPatch->enmType == HMTPRINSTR_JUMP_REPLACEMENT) … … 3139 3139 Assert(pPatch->enmType == HMTPRINSTR_JUMP_REPLACEMENT || pVM->hm.s.fTPRPatchingActive == false); 3140 3140 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); 3145 3145 AssertRCReturn(rc, rc); 3146 3146
Note:
See TracChangeset
for help on using the changeset viewer.