Changeset 91301 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 17, 2021 1:38:24 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 146961
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r91297 r91301 2882 2882 * Finally, consult the VMREAD/VMWRITE bitmap whether to intercept the instruction or not. 2883 2883 */ 2884 uint32_t const u32VmcsField = RT_LO_U32(u64VmcsField);2885 uint8_t const * pbBitmap = uExitReason == VMX_EXIT_VMREAD2886 ? (uint8_t const *)pVCpu->cpum.s.Guest.hwvirt.vmx.CTX_SUFF(pvVmreadBitmap)2887 : (uint8_t const *)pVCpu->cpum.s.Guest.hwvirt.vmx.CTX_SUFF(pvVmwriteBitmap);2884 uint32_t const u32VmcsField = RT_LO_U32(u64VmcsField); 2885 uint8_t const * const pbBitmap = uExitReason == VMX_EXIT_VMREAD 2886 ? &pVCpu->cpum.s.Guest.hwvirt.vmx.abVmreadBitmap[0] 2887 : &pVCpu->cpum.s.Guest.hwvirt.vmx.abVmwriteBitmap[0]; 2888 2888 Assert(pbBitmap); 2889 2889 Assert(u32VmcsField >> 3 < VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 2890 return ASMBitTest( pbBitmap + (u32VmcsField >> 3), u32VmcsField & 7);2890 return ASMBitTest(&pbBitmap[u32VmcsField >> 3], u32VmcsField & 7); 2891 2891 } 2892 2892 -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r91298 r91301 1576 1576 * See Intel spec. 24.7.2 "VM-Exit Controls for MSRs". 1577 1577 */ 1578 uint32_t const cMsrs = pVmcs->u32ExitMsrStoreCount;1578 uint32_t const cMsrs = RT_MIN(pVmcs->u32ExitMsrStoreCount, RT_ELEMENTS(pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrStoreArea)); 1579 1579 if (!cMsrs) 1580 1580 return VINF_SUCCESS; … … 1599 1599 RTGCPHYS const GCPhysVmExitMsrStoreArea = pVmcs->u64AddrExitMsrStore.u; 1600 1600 if (GCPhysVmEntryMsrLoadArea == GCPhysVmExitMsrStoreArea) 1601 pMsrArea = pVCpu->cpum.GstCtx.hwvirt.vmx. CTX_SUFF(pEntryMsrLoadArea);1601 pMsrArea = pVCpu->cpum.GstCtx.hwvirt.vmx.aEntryMsrLoadArea; 1602 1602 else 1603 1603 { 1604 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), (void *)pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pExitMsrStoreArea),1604 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrStoreArea[0], 1605 1605 GCPhysVmExitMsrStoreArea, cMsrs * sizeof(VMXAUTOMSR)); 1606 1606 if (RT_SUCCESS(rc)) 1607 pMsrArea = pVCpu->cpum.GstCtx.hwvirt.vmx. CTX_SUFF(pExitMsrStoreArea);1607 pMsrArea = pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrStoreArea; 1608 1608 else 1609 1609 { … … 1617 1617 */ 1618 1618 PVMXAUTOMSR pMsr = pMsrArea; 1619 Assert(pMsr);1620 1619 for (uint32_t idxMsr = 0; idxMsr < cMsrs; idxMsr++, pMsr++) 1621 1620 { … … 1953 1952 * See Intel spec. 24.7.2 "VM-Exit Controls for MSRs". 1954 1953 */ 1955 uint32_t const cMsrs = pVmcs->u32ExitMsrLoadCount;1954 uint32_t const cMsrs = RT_MIN(pVmcs->u32ExitMsrLoadCount, RT_ELEMENTS(pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrLoadArea)); 1956 1955 if (!cMsrs) 1957 1956 return VINF_SUCCESS; … … 1969 1968 1970 1969 RTGCPHYS const GCPhysVmExitMsrLoadArea = pVmcs->u64AddrExitMsrLoad.u; 1971 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), (void *)pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pExitMsrLoadArea),1970 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrLoadArea[0], 1972 1971 GCPhysVmExitMsrLoadArea, cMsrs * sizeof(VMXAUTOMSR)); 1973 1972 if (RT_SUCCESS(rc)) 1974 1973 { 1975 PCVMXAUTOMSR pMsr = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pExitMsrLoadArea); 1976 Assert(pMsr); 1974 PCVMXAUTOMSR pMsr = pVCpu->cpum.GstCtx.hwvirt.vmx.aExitMsrLoadArea; 1977 1975 for (uint32_t idxMsr = 0; idxMsr < cMsrs; idxMsr++, pMsr++) 1978 1976 { … … 6459 6457 * See Intel spec. 24.8.2 "VM-Entry Controls for MSRs". 6460 6458 */ 6461 uint32_t const cMsrs = pVmcs->u32EntryMsrLoadCount;6459 uint32_t const cMsrs = RT_MIN(pVmcs->u32EntryMsrLoadCount, RT_ELEMENTS(pVCpu->cpum.GstCtx.hwvirt.vmx.aEntryMsrLoadArea)); 6462 6460 if (!cMsrs) 6463 6461 return VINF_SUCCESS; … … 6478 6476 6479 6477 RTGCPHYS const GCPhysVmEntryMsrLoadArea = pVmcs->u64AddrEntryMsrLoad.u; 6480 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), (void *)pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pEntryMsrLoadArea),6478 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->cpum.GstCtx.hwvirt.vmx.aEntryMsrLoadArea[0], 6481 6479 GCPhysVmEntryMsrLoadArea, cMsrs * sizeof(VMXAUTOMSR)); 6482 6480 if (RT_SUCCESS(rc)) 6483 6481 { 6484 PCVMXAUTOMSR pMsr = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pEntryMsrLoadArea); 6485 Assert(pMsr); 6482 PCVMXAUTOMSR pMsr = &pVCpu->cpum.GstCtx.hwvirt.vmx.aEntryMsrLoadArea[0]; 6486 6483 for (uint32_t idxMsr = 0; idxMsr < cMsrs; idxMsr++, pMsr++) 6487 6484 { … … 6642 6639 /* Read the VMREAD-bitmap. */ 6643 6640 RTGCPHYS const GCPhysVmreadBitmap = pVmcs->u64AddrVmreadBitmap.u; 6644 Assert(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvVmreadBitmap)); 6645 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvVmreadBitmap), 6646 GCPhysVmreadBitmap, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 6641 int rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->cpum.GstCtx.hwvirt.vmx.abVmreadBitmap[0], 6642 GCPhysVmreadBitmap, sizeof(pVCpu->cpum.GstCtx.hwvirt.vmx.abVmreadBitmap)); 6647 6643 if (RT_SUCCESS(rc)) 6648 6644 { /* likely */ } … … 6652 6648 /* Read the VMWRITE-bitmap. */ 6653 6649 RTGCPHYS const GCPhysVmwriteBitmap = pVmcs->u64AddrVmwriteBitmap.u; 6654 Assert(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvVmwriteBitmap)); 6655 rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvVmwriteBitmap), 6656 GCPhysVmwriteBitmap, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 6650 rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->cpum.GstCtx.hwvirt.vmx.abVmwriteBitmap[0], 6651 GCPhysVmwriteBitmap, sizeof(pVCpu->cpum.GstCtx.hwvirt.vmx.abVmwriteBitmap)); 6657 6652 if (RT_SUCCESS(rc)) 6658 6653 { /* likely */ } -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r91298 r91301 1067 1067 pCtx->hwvirt.vmx.pvVirtApicPageR3 = NULL; 1068 1068 } 1069 if (pCtx->hwvirt.vmx.pvVmreadBitmapR3)1070 {1071 SUPR3ContFree(pCtx->hwvirt.vmx.pvVmreadBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_PAGES);1072 pCtx->hwvirt.vmx.pvVmreadBitmapR3 = NULL;1073 }1074 if (pCtx->hwvirt.vmx.pvVmwriteBitmapR3)1075 {1076 SUPR3ContFree(pCtx->hwvirt.vmx.pvVmwriteBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_PAGES);1077 pCtx->hwvirt.vmx.pvVmwriteBitmapR3 = NULL;1078 }1079 if (pCtx->hwvirt.vmx.pEntryMsrLoadAreaR3)1080 {1081 SUPR3ContFree(pCtx->hwvirt.vmx.pEntryMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_PAGES);1082 pCtx->hwvirt.vmx.pEntryMsrLoadAreaR3 = NULL;1083 }1084 if (pCtx->hwvirt.vmx.pExitMsrStoreAreaR3)1085 {1086 SUPR3ContFree(pCtx->hwvirt.vmx.pExitMsrStoreAreaR3, VMX_V_AUTOMSR_AREA_PAGES);1087 pCtx->hwvirt.vmx.pExitMsrStoreAreaR3 = NULL;1088 }1089 if (pCtx->hwvirt.vmx.pExitMsrLoadAreaR3)1090 {1091 SUPR3ContFree(pCtx->hwvirt.vmx.pExitMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_PAGES);1092 pCtx->hwvirt.vmx.pExitMsrLoadAreaR3 = NULL;1093 }1094 1069 if (pCtx->hwvirt.vmx.pvMsrBitmapR3) 1095 1070 { … … 1133 1108 AssertCompile(sizeof(pCtx->hwvirt.vmx.ShadowVmcs) == VMX_V_SHADOW_VMCS_PAGES * X86_PAGE_SIZE); 1134 1109 AssertCompile(sizeof(pCtx->hwvirt.vmx.ShadowVmcs) == VMX_V_SHADOW_VMCS_SIZE); 1110 AssertCompile(sizeof(pCtx->hwvirt.vmx.abVmreadBitmap) == VMX_V_VMREAD_VMWRITE_BITMAP_PAGES * X86_PAGE_SIZE); 1111 AssertCompile(sizeof(pCtx->hwvirt.vmx.abVmreadBitmap) == VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 1112 AssertCompile(sizeof(pCtx->hwvirt.vmx.abVmwriteBitmap) == VMX_V_VMREAD_VMWRITE_BITMAP_PAGES * X86_PAGE_SIZE); 1113 AssertCompile(sizeof(pCtx->hwvirt.vmx.abVmwriteBitmap) == VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 1114 AssertCompile(sizeof(pCtx->hwvirt.vmx.aEntryMsrLoadArea) == VMX_V_AUTOMSR_AREA_PAGES * X86_PAGE_SIZE); 1115 AssertCompile(sizeof(pCtx->hwvirt.vmx.aEntryMsrLoadArea) == VMX_V_AUTOMSR_AREA_SIZE); 1116 AssertCompile(sizeof(pCtx->hwvirt.vmx.aExitMsrStoreArea) == VMX_V_AUTOMSR_AREA_PAGES * X86_PAGE_SIZE); 1117 AssertCompile(sizeof(pCtx->hwvirt.vmx.aExitMsrStoreArea) == VMX_V_AUTOMSR_AREA_SIZE); 1118 AssertCompile(sizeof(pCtx->hwvirt.vmx.aExitMsrLoadArea) == VMX_V_AUTOMSR_AREA_PAGES * X86_PAGE_SIZE); 1119 AssertCompile(sizeof(pCtx->hwvirt.vmx.aExitMsrLoadArea) == VMX_V_AUTOMSR_AREA_SIZE); 1135 1120 1136 1121 /* … … 1150 1135 1151 1136 /* 1152 * Allocate the VMREAD-bitmap.1153 */1154 pCtx->hwvirt.vmx.pvVmreadBitmapR3 = SUPR3ContAlloc(VMX_V_VMREAD_VMWRITE_BITMAP_PAGES,1155 &pCtx->hwvirt.vmx.pvVmreadBitmapR0, NULL);1156 if (pCtx->hwvirt.vmx.pvVmreadBitmapR3)1157 { /* likely */ }1158 else1159 {1160 LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VMREAD-bitmap\n", pVCpu->idCpu,1161 VMX_V_VMREAD_VMWRITE_BITMAP_PAGES));1162 break;1163 }1164 1165 /*1166 * Allocatge the VMWRITE-bitmap.1167 */1168 pCtx->hwvirt.vmx.pvVmwriteBitmapR3 = SUPR3ContAlloc(VMX_V_VMREAD_VMWRITE_BITMAP_PAGES,1169 &pCtx->hwvirt.vmx.pvVmwriteBitmapR0, NULL);1170 if (pCtx->hwvirt.vmx.pvVmwriteBitmapR3)1171 { /* likely */ }1172 else1173 {1174 LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VMWRITE-bitmap\n", pVCpu->idCpu,1175 VMX_V_VMREAD_VMWRITE_BITMAP_PAGES));1176 break;1177 }1178 1179 /*1180 * Allocate the VM-entry MSR-load area.1181 */1182 pCtx->hwvirt.vmx.pEntryMsrLoadAreaR3 = (PVMXAUTOMSR)SUPR3ContAlloc(VMX_V_AUTOMSR_AREA_PAGES,1183 &pCtx->hwvirt.vmx.pEntryMsrLoadAreaR0, NULL);1184 if (pCtx->hwvirt.vmx.pEntryMsrLoadAreaR3)1185 { /* likely */ }1186 else1187 {1188 LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VM-entry MSR-load area\n", pVCpu->idCpu,1189 VMX_V_AUTOMSR_AREA_PAGES));1190 break;1191 }1192 1193 /*1194 * Allocate the VM-exit MSR-store area.1195 */1196 pCtx->hwvirt.vmx.pExitMsrStoreAreaR3 = (PVMXAUTOMSR)SUPR3ContAlloc(VMX_V_AUTOMSR_AREA_PAGES,1197 &pCtx->hwvirt.vmx.pExitMsrStoreAreaR0, NULL);1198 if (pCtx->hwvirt.vmx.pExitMsrStoreAreaR3)1199 { /* likely */ }1200 else1201 {1202 LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VM-exit MSR-store area\n", pVCpu->idCpu,1203 VMX_V_AUTOMSR_AREA_PAGES));1204 break;1205 }1206 1207 /*1208 * Allocate the VM-exit MSR-load area.1209 */1210 pCtx->hwvirt.vmx.pExitMsrLoadAreaR3 = (PVMXAUTOMSR)SUPR3ContAlloc(VMX_V_AUTOMSR_AREA_PAGES,1211 &pCtx->hwvirt.vmx.pExitMsrLoadAreaR0, NULL);1212 if (pCtx->hwvirt.vmx.pExitMsrLoadAreaR3)1213 { /* likely */ }1214 else1215 {1216 LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VM-exit MSR-load area\n", pVCpu->idCpu,1217 VMX_V_AUTOMSR_AREA_PAGES));1218 break;1219 }1220 1221 /*1222 1137 * Allocate the MSR bitmap. 1223 1138 */ … … 1251 1166 RT_ZERO(pCtx->hwvirt.vmx.Vmcs); 1252 1167 RT_ZERO(pCtx->hwvirt.vmx.ShadowVmcs); 1253 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvVirtApicPage), 0, VMX_V_VIRT_APIC_SIZE); 1254 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvVmreadBitmap), 0, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 1255 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvVmwriteBitmap), 0, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE); 1256 memset(pCtx->hwvirt.vmx.CTX_SUFF(pEntryMsrLoadArea), 0, VMX_V_AUTOMSR_AREA_SIZE); 1257 memset(pCtx->hwvirt.vmx.CTX_SUFF(pExitMsrStoreArea), 0, VMX_V_AUTOMSR_AREA_SIZE); 1258 memset(pCtx->hwvirt.vmx.CTX_SUFF(pExitMsrLoadArea), 0, VMX_V_AUTOMSR_AREA_SIZE); 1168 RT_ZERO(pCtx->hwvirt.vmx.abVmreadBitmap); 1169 RT_ZERO(pCtx->hwvirt.vmx.abVmwriteBitmap); 1170 RT_ZERO(pCtx->hwvirt.vmx.aEntryMsrLoadArea); 1171 RT_ZERO(pCtx->hwvirt.vmx.aExitMsrStoreArea); 1172 RT_ZERO(pCtx->hwvirt.vmx.aExitMsrLoadArea); 1259 1173 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvMsrBitmap), 0, VMX_V_MSR_BITMAP_SIZE); 1260 1174 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvIoBitmap), 0, VMX_V_IO_BITMAP_A_SIZE + VMX_V_IO_BITMAP_B_SIZE); 1175 memset(pCtx->hwvirt.vmx.CTX_SUFF(pvVirtApicPage), 0, VMX_V_VIRT_APIC_SIZE); 1261 1176 } 1262 1177 … … 2565 2480 SSMR3PutStructEx(pSSM, &pGstCtx->hwvirt.vmx.ShadowVmcs, sizeof(pGstCtx->hwvirt.vmx.ShadowVmcs), 2566 2481 0, g_aVmxHwvirtVmcs, NULL); 2567 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pvVmreadBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE);2568 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pvVmwriteBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE);2569 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pEntryMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2570 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pExitMsrStoreAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2571 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pExitMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2482 SSMR3PutMem(pSSM, &pGstCtx->hwvirt.vmx.abVmreadBitmap[0], sizeof(pGstCtx->hwvirt.vmx.abVmreadBitmap)); 2483 SSMR3PutMem(pSSM, &pGstCtx->hwvirt.vmx.abVmwriteBitmap[0], sizeof(pGstCtx->hwvirt.vmx.abVmwriteBitmap)); 2484 SSMR3PutMem(pSSM, &pGstCtx->hwvirt.vmx.aEntryMsrLoadArea[0], sizeof(pGstCtx->hwvirt.vmx.aEntryMsrLoadArea)); 2485 SSMR3PutMem(pSSM, &pGstCtx->hwvirt.vmx.aExitMsrStoreArea[0], sizeof(pGstCtx->hwvirt.vmx.aExitMsrStoreArea)); 2486 SSMR3PutMem(pSSM, &pGstCtx->hwvirt.vmx.aExitMsrLoadArea[0], sizeof(pGstCtx->hwvirt.vmx.aExitMsrLoadArea)); 2572 2487 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pvMsrBitmapR3, VMX_V_MSR_BITMAP_SIZE); 2573 2488 SSMR3PutMem(pSSM, pGstCtx->hwvirt.vmx.pvIoBitmapR3, VMX_V_IO_BITMAP_A_SIZE + VMX_V_IO_BITMAP_B_SIZE); … … 2855 2770 SSMR3GetStructEx(pSSM, &pGstCtx->hwvirt.vmx.ShadowVmcs, sizeof(pGstCtx->hwvirt.vmx.ShadowVmcs), 2856 2771 0, g_aVmxHwvirtVmcs, NULL); 2857 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pvVmreadBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE);2858 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pvVmwriteBitmapR3, VMX_V_VMREAD_VMWRITE_BITMAP_SIZE);2859 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pEntryMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2860 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pExitMsrStoreAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2861 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pExitMsrLoadAreaR3, VMX_V_AUTOMSR_AREA_SIZE);2772 SSMR3GetMem(pSSM, &pGstCtx->hwvirt.vmx.abVmreadBitmap[0], sizeof(pGstCtx->hwvirt.vmx.abVmreadBitmap)); 2773 SSMR3GetMem(pSSM, &pGstCtx->hwvirt.vmx.abVmwriteBitmap[0], sizeof(pGstCtx->hwvirt.vmx.abVmwriteBitmap)); 2774 SSMR3GetMem(pSSM, &pGstCtx->hwvirt.vmx.aEntryMsrLoadArea[0], sizeof(pGstCtx->hwvirt.vmx.aEntryMsrLoadArea)); 2775 SSMR3GetMem(pSSM, &pGstCtx->hwvirt.vmx.aExitMsrStoreArea[0], sizeof(pGstCtx->hwvirt.vmx.aExitMsrStoreArea)); 2776 SSMR3GetMem(pSSM, &pGstCtx->hwvirt.vmx.aExitMsrLoadArea[0], sizeof(pGstCtx->hwvirt.vmx.aExitMsrLoadArea)); 2862 2777 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pvMsrBitmapR3, VMX_V_MSR_BITMAP_SIZE); 2863 2778 SSMR3GetMem(pSSM, pGstCtx->hwvirt.vmx.pvIoBitmapR3, VMX_V_IO_BITMAP_A_SIZE + VMX_V_IO_BITMAP_B_SIZE); -
trunk/src/VBox/VMM/include/CPUMInternal.mac
r91299 r91301 230 230 .Guest.XState EQU .Guest.abXState 231 231 232 ;; 232 233 alignb 4096 233 234 .Guest.hwvirt resb 0 … … 235 236 .Guest.hwvirt.vmx resb 0 236 237 237 .Guest.hwvirt.svm.Vmcb resb 4096 238 .Guest.hwvirt.svm.abMsrBitmap resb 8192 239 .Guest.hwvirt.svm.abIoBitmap resb 12288 240 .Guest.hwvirt.svm.uMsrHSavePa resq 1 241 .Guest.hwvirt.svm.GCPhysVmcb resq 1 242 alignb 8 243 .Guest.hwvirt.svm.HostState resb 184 244 .Guest.hwvirt.svm.uPrevPauseTick resq 1 245 .Guest.hwvirt.svm.cPauseFilter resw 1 246 .Guest.hwvirt.svm.cPauseFilterThreshold resw 1 247 .Guest.hwvirt.svm.fInterceptEvents resb 1 248 249 .Guest.hwvirt.vmx.Vmcs EQU (.Guest.hwvirt.vmx ) 250 .Guest.hwvirt.vmx.ShadowVmcs EQU (.Guest.hwvirt.vmx + 0x1000) 251 252 ;.unnamed_padding.1 resb 0 238 .Guest.hwvirt.svm.Vmcb EQU .Guest.hwvirt.svm 239 .Guest.hwvirt.svm.abMsrBitmap EQU (.Guest.hwvirt.svm.Vmcb + 0x1000) 240 .Guest.hwvirt.svm.abIoBitmap EQU (.Guest.hwvirt.svm.abMsrBitmap + 0x2000) 241 .Guest.hwvirt.svm.uMsrHSavePa EQU (.Guest.hwvirt.svm.abIoBitmap + 0x3000) ; resq 1 242 .Guest.hwvirt.svm.GCPhysVmcb EQU (.Guest.hwvirt.svm.uMsrHSavePa + 8) ; resq 1 243 alignb 8 244 .Guest.hwvirt.svm.HostState EQU (.Guest.hwvirt.svm.GCPhysVmcb + 8) ; resb 184 245 .Guest.hwvirt.svm.uPrevPauseTick EQU (.Guest.hwvirt.svm.HostState + 184) ; resq 1 246 .Guest.hwvirt.svm.cPauseFilter EQU (.Guest.hwvirt.svm.uPrevPauseTick + 8) ; resw 1 247 .Guest.hwvirt.svm.cPauseFilterThreshold EQU (.Guest.hwvirt.svm.cPauseFilter + 2) ; resw 1 248 .Guest.hwvirt.svm.fInterceptEvents EQU (.Guest.hwvirt.svm.cPauseFilterThreshold + 2) ; resb 1 249 250 .Guest.hwvirt.vmx.Vmcs resb 0x1000 251 .Guest.hwvirt.vmx.ShadowVmcs resb 0x1000 252 .Guest.hwvirt.vmx.abVmreadBitmap resb 0x1000 253 .Guest.hwvirt.vmx.abVmwriteBitmap resb 0x1000 254 .Guest.hwvirt.vmx.aEntryMsrLoadArea resb 0x2000 255 .Guest.hwvirt.vmx.aExitMsrStoreArea resb 0x2000 256 .Guest.hwvirt.vmx.aExitMsrLoadArea resb 0x2000 257 alignb 8 258 .Guest.hwvirt.vmx.GCPhysVmxon resq 1 259 .Guest.hwvirt.vmx.GCPhysVmcs resq 1 260 .Guest.hwvirt.vmx.GCPhysShadowVmcs resq 1 261 .Guest.hwvirt.vmx.enmDiag resd 1 262 .Guest.hwvirt.vmx.enmAbort resd 1 263 .Guest.hwvirt.vmx.uDiagAux resq 1 264 .Guest.hwvirt.vmx.uAbortAux resd 1 265 .Guest.hwvirt.vmx.fInVmxRootMode resb 1 266 .Guest.hwvirt.vmx.fInVmxNonRootMode resb 1 267 .Guest.hwvirt.vmx.fInterceptEvents resb 1 268 .Guest.hwvirt.vmx.fNmiUnblockingIret resb 1 269 .Guest.hwvirt.vmx.pvVirtApicPageR0 resq 1 270 .Guest.hwvirt.vmx.pvVirtApicPageR3 resq 1 271 .Guest.hwvirt.vmx.pvMsrBitmapR0 resq 1 272 .Guest.hwvirt.vmx.pvMsrBitmapR3 resq 1 273 .Guest.hwvirt.vmx.pvIoBitmapR0 resq 1 274 .Guest.hwvirt.vmx.pvIoBitmapR3 resq 1 275 .Guest.hwvirt.vmx.uFirstPauseLoopTick resq 1 276 .Guest.hwvirt.vmx.uPrevPauseTick resq 1 277 .Guest.hwvirt.vmx.uEntryTick resq 1 278 .Guest.hwvirt.vmx.offVirtApicWrite resw 1 279 .Guest.hwvirt.vmx.fVirtNmiBlocking resb 1 280 alignb 8 281 .Guest.hwvirt.vmx.Msrs resb 224 282 .Guest.hwvirt.vmx.HCPhysVirtApicPage resq 1 283 253 284 alignb 8 254 285 .Guest.hwvirt.enmHwvirt resd 1 -
trunk/src/VBox/VMM/testcase/tstVMStruct.h
r91298 r91301 150 150 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVirtApicPageR0); 151 151 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVirtApicPageR3); 152 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVmreadBitmapR0);153 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVmreadBitmapR3);154 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVmwriteBitmapR0);155 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvVmwriteBitmapR3);156 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pEntryMsrLoadAreaR0);157 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pEntryMsrLoadAreaR3);158 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pExitMsrStoreAreaR0);159 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pExitMsrStoreAreaR3);160 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pExitMsrLoadAreaR0);161 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pExitMsrLoadAreaR3);162 152 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvMsrBitmapR0); 163 153 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.pvMsrBitmapR3); -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r91298 r91301 254 254 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.Vmcs, 4096); 255 255 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.ShadowVmcs, 4096); 256 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.abVmreadBitmap, 4096); 257 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.abVmwriteBitmap, 4096); 258 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.aEntryMsrLoadArea, 4096); 259 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.aExitMsrStoreArea, 4096); 260 CHECK_MEMBER_ALIGNMENT(VMCPU, cpum.s.Guest.hwvirt.vmx.aExitMsrLoadArea, 4096); 256 261 257 262 PVM pVM = NULL; NOREF(pVM);
Note:
See TracChangeset
for help on using the changeset viewer.