- Timestamp:
- Oct 21, 2022 8:10:15 AM (2 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
-
include/VBox/sup.h (modified) (1 diff)
-
include/VBox/vmm/cpum.h (modified) (2 diffs)
-
include/VBox/vmm/hm_vmx.h (modified) (8 diffs)
-
src/VBox/HostDrivers/Support/SUPDrv.cpp (modified) (1 diff)
-
src/VBox/HostDrivers/Support/SUPDrvIOC.h (modified) (1 diff)
-
src/VBox/HostDrivers/Support/SUPLib.cpp (modified) (1 diff)
-
src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp (modified) (1 diff)
-
src/VBox/VMM/VMMAll/HMAll.cpp (modified) (1 diff)
-
src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp (modified) (16 diffs)
-
src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h (modified) (2 diffs)
-
src/VBox/VMM/VMMR3/CPUM.cpp (modified) (10 diffs)
-
src/VBox/VMM/include/CPUMInternal.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/sup.h
r96407 r97262 178 178 uint64_t u64EptVpidCaps; 179 179 uint64_t u64ProcCtls3; 180 uint64_t au64Reserved[8]; 180 uint64_t u64ExitCtls2; 181 uint64_t au64Reserved[7]; 181 182 } vmx; 182 183 struct -
trunk/include/VBox/vmm/cpum.h
r97231 r97262 1401 1401 /** VMX: Supports save VMX preemption timer on VM-exit. */ 1402 1402 uint32_t fVmxSavePreemptTimer : 1; 1403 /** VMX: Supports secondary VM-exit controls. */ 1404 uint32_t fVmxExitCtls2 : 1; 1403 1405 /** @} */ 1404 1406 … … 1418 1420 1419 1421 /** VMX: Padding / reserved for future features. */ 1420 uint32_t fVmxPadding0 : 1 7;1422 uint32_t fVmxPadding0 : 16; 1421 1423 /** VMX: Padding / reserved for future, making it a total of 128 bits. */ 1422 1424 uint32_t fVmxPadding1; -
trunk/include/VBox/vmm/hm_vmx.h
r97040 r97262 1360 1360 /** Tertiary processor-based VM-execution controls. */ 1361 1361 uint64_t u64ProcCtls3; 1362 /** Secondary VM-exit controls. */ 1363 uint64_t u64ExitCtls2; 1362 1364 /** Reserved for future. */ 1363 uint64_t a_u64Reserved[ 9];1365 uint64_t a_u64Reserved[8]; 1364 1366 } VMXMSRS; 1365 1367 AssertCompileSizeAlignment(VMXMSRS, 8); … … 1927 1929 #define VMX_VMCS16_POSTED_INT_NOTIFY_VECTOR 0x0002 1928 1930 #define VMX_VMCS16_EPTP_INDEX 0x0004 1931 #define VMX_VMCS16_HLAT_PREFIX_SIZE 0x0006 1929 1932 1930 1933 /** 16-bit guest-state fields. */ … … 2006 2009 #define VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_FULL 0x2036 2007 2010 #define VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_HIGH 0x2037 2011 #define VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_FULL 0x203e 2012 #define VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_HIGH 0x203f 2013 #define VMX_VMCS64_CTRL_HLAT_PTR_FULL 0x2040 2014 #define VMX_VMCS64_CTRL_HLAT_PTR_HIGH 0x2041 2015 #define VMX_VMCS64_CTRL_EXIT2_FULL 0x2044 2016 #define VMX_VMCS64_CTRL_EXIT2_HIGH 0x2045 2008 2017 2009 2018 /** 64-bit read-only data fields. */ … … 2725 2734 /** Whether the host IA32_PKRS MSR is loaded on VM-exit. */ 2726 2735 #define VMX_EXIT_CTLS_LOAD_PKRS_MSR RT_BIT(29) 2736 /** Whether the host IA32_PERF_GLOBAL_CTRL MSR is saved on VM-exit. */ 2737 #define VMX_EXIT_CTLS_SAVE_PERF_MSR RT_BIT(30) 2738 /** Whether secondary VM-exit controls are used. */ 2739 #define VMX_EXIT_CTLS_USE_SECONDARY_CTLS RT_BIT(31) 2727 2740 /** Default1 class when true-capability MSRs are not supported. */ 2728 2741 #define VMX_EXIT_CTLS_DEFAULT1 UINT32_C(0x00036dff) … … 2770 2783 #define VMX_BF_EXIT_CTLS_LOAD_PKRS_MSR_SHIFT 29 2771 2784 #define VMX_BF_EXIT_CTLS_LOAD_PKRS_MSR_MASK UINT32_C(0x20000000) 2772 #define VMX_BF_EXIT_CTLS_RSVD_30_31_SHIFT 30 2773 #define VMX_BF_EXIT_CTLS_RSVD_30_31_MASK UINT32_C(0xc0000000) 2785 #define VMX_BF_EXIT_CTLS_SAVE_PERF_MSR_SHIFT 30 2786 #define VMX_BF_EXIT_CTLS_SAVE_PERF_MSR_MASK UINT32_C(0x40000000) 2787 #define VMX_BF_EXIT_CTLS_USE_SECONDARY_CTLS_SHIFT 31 2788 #define VMX_BF_EXIT_CTLS_USE_SECONDARY_CTLS_MASK UINT32_C(0x80000000) 2774 2789 RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_EXIT_CTLS_, UINT32_C(0), UINT32_MAX, 2775 2790 (RSVD_0_1, SAVE_DEBUG, RSVD_3_8, HOST_ADDR_SPACE_SIZE, RSVD_10_11, LOAD_PERF_MSR, RSVD_13_14, 2776 2791 ACK_EXT_INT, RSVD_16_17, SAVE_PAT_MSR, LOAD_PAT_MSR, SAVE_EFER_MSR, LOAD_EFER_MSR, 2777 2792 SAVE_PREEMPT_TIMER, CLEAR_BNDCFGS_MSR, CONCEAL_VMX_FROM_PT, CLEAR_RTIT_CTL_MSR, RSVD_26_27, 2778 LOAD_CET, LOAD_PKRS_MSR, RSVD_30_31));2793 LOAD_CET, LOAD_PKRS_MSR, SAVE_PERF_MSR, USE_SECONDARY_CTLS)); 2779 2794 /** @} */ 2780 2795 … … 3808 3823 3809 3824 /** The highest index value used for supported virtual VMCS field encoding. */ 3810 #define VMX_V_VMCS_MAX_INDEX RT_BF_GET(VMX_VMCS64_CTRL_E NCLV_EXITING_BITMAP_HIGH, VMX_BF_VMCSFIELD_INDEX)3825 #define VMX_V_VMCS_MAX_INDEX RT_BF_GET(VMX_VMCS64_CTRL_EXIT2_HIGH, VMX_BF_VMCSFIELD_INDEX) 3811 3826 3812 3827 /** … … 4035 4050 uint16_t u16PostIntNotifyVector; /**< 0x1b2 - Posted interrupt notify vector. */ 4036 4051 uint16_t u16EptpIndex; /**< 0x1b4 - EPTP index. */ 4037 uint16_t au16Reserved0[13]; /**< 0x1b6 - Reserved for future. */ 4052 uint16_t u16HlatPrefixSize; /**< 0x1b6 - HLAT prefix size. */ 4053 uint16_t au16Reserved0[12]; /**< 0x1b8 - Reserved for future. */ 4038 4054 4039 4055 /** 32-bit fields. */ … … 4087 4103 RTUINT64U u64ProcCtls3; /**< 0x328 - Tertiary-Processor based VM-execution controls. */ 4088 4104 RTUINT64U u64EnclvExitBitmap; /**< 0x330 - ENCLV-exiting bitmap. */ 4089 RTUINT64U au64Reserved0[13]; /**< 0x338 - Reserved for future. */ 4105 RTUINT64U u64PconfigExitBitmap; /**< 0x338 - PCONFIG-exiting bitmap. */ 4106 RTUINT64U u64HlatPtr; /**< 0x340 - HLAT pointer. */ 4107 RTUINT64U u64ExitCtls2; /**< 0x348 - Secondary VM-exit controls. */ 4108 RTUINT64U au64Reserved0[10]; /**< 0x350 - Reserved for future. */ 4090 4109 4091 4110 /** Natural-width fields. */ -
trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp
r96811 r97262 4855 4855 if (Msrs.u.vmx.ProcCtls.n.allowed1 & VMX_PROC_CTLS_USE_TERTIARY_CTLS) 4856 4856 Msrs.u.vmx.u64ProcCtls3 = ASMRdMsr(MSR_IA32_VMX_PROCBASED_CTLS3); 4857 4858 if (Msrs.u.vmx.ExitCtls.n.allowed1 & VMX_EXIT_CTLS_USE_SECONDARY_CTLS) 4859 Msrs.u.vmx.u64ExitCtls2 = ASMRdMsr(MSR_IA32_VMX_EXIT_CTLS2); 4857 4860 } 4858 4861 else if (fCaps & SUPVTCAPS_AMD_V) -
trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
r96811 r97262 233 233 * - nothing 234 234 */ 235 #define SUPDRV_IOC_VERSION 0x0033000 3235 #define SUPDRV_IOC_VERSION 0x00330004 236 236 237 237 /** SUP_IOCTL_COOKIE. */ -
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r96811 r97262 299 299 CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION; 300 300 const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00330000 301 ? 0x0033000 3301 ? 0x00330004 302 302 : SUPDRV_IOC_VERSION & 0xffff0000; 303 303 CookieReq.u.In.u32MinVersion = uMinVersion; -
trunk/src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp
r97070 r97262 1353 1353 pFeatures->fVmxExitLoadEferMsr = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_LOAD_EFER_MSR); 1354 1354 pFeatures->fVmxSavePreemptTimer = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_SAVE_PREEMPT_TIMER); 1355 pFeatures->fVmxExitCtls2 = RT_BOOL(fExitCtls & VMX_EXIT_CTLS_USE_SECONDARY_CTLS); 1355 1356 } 1356 1357 -
trunk/src/VBox/VMM/VMMAll/HMAll.cpp
r96407 r97262 849 849 pVmxMsrs->u64EptVpidCaps = pHwvirtMsrs->u.vmx.u64EptVpidCaps; 850 850 pVmxMsrs->u64ProcCtls3 = pHwvirtMsrs->u.vmx.u64ProcCtls3; 851 pVmxMsrs->u64ExitCtls2 = pHwvirtMsrs->u.vmx.u64ExitCtls2; 851 852 } 852 853 -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp
r97222 r97262 214 214 /* 1 */ RT_UOFFSETOF(VMXVVMCS, u16PostIntNotifyVector), 215 215 /* 2 */ RT_UOFFSETOF(VMXVVMCS, u16EptpIndex), 216 /* 3-10 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 217 /* 11-18 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 218 /* 19-26 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 219 /* 27 */ UINT16_MAX, 216 /* 3 */ RT_UOFFSETOF(VMXVVMCS, u16HlatPrefixSize), 217 /* 4-11 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 218 /* 12-19 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 219 /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 220 /* 28-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 220 221 }, 221 222 /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */ … … 224 225 /* 8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 225 226 /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 226 /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 227 /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 228 /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 227 229 }, 228 230 /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */ … … 240 242 /* 10-17 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 241 243 /* 18-25 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 242 /* 26-27 */ UINT16_MAX, UINT16_MAX 244 /* 26-33 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 245 /* 34 */ UINT16_MAX 243 246 }, 244 247 /* VMX_VMCSFIELD_WIDTH_16BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */ … … 253 256 /* 7-14 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 254 257 /* 15-22 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 255 /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 258 /* 23-30 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 259 /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 256 260 }, 257 261 /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_CONTROL: */ … … 284 288 /* 25 */ RT_UOFFSETOF(VMXVVMCS, u64TscMultiplier), 285 289 /* 26 */ RT_UOFFSETOF(VMXVVMCS, u64ProcCtls3), 286 /* 27 */ RT_UOFFSETOF(VMXVVMCS, u64EnclvExitBitmap) 290 /* 27 */ RT_UOFFSETOF(VMXVVMCS, u64EnclvExitBitmap), 291 /* 28 */ UINT16_MAX, 292 /* 29 */ UINT16_MAX, 293 /* 30 */ UINT16_MAX, 294 /* 31 */ RT_UOFFSETOF(VMXVVMCS, u64PconfigExitBitmap), 295 /* 32 */ RT_UOFFSETOF(VMXVVMCS, u64HlatPtr), 296 /* 33 */ UINT16_MAX, 297 /* 34 */ RT_UOFFSETOF(VMXVVMCS, u64ExitCtls2) 287 298 }, 288 299 /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */ … … 292 303 /* 9-16 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 293 304 /* 17-24 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 294 /* 25-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 305 /* 25-32 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 306 /* 33-34*/ UINT16_MAX, UINT16_MAX 295 307 }, 296 308 /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */ … … 310 322 /* 12 */ RT_UOFFSETOF(VMXVVMCS, u64GuestPkrsMsr), 311 323 /* 13-20 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 312 /* 21-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 324 /* 21-28 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 325 /* 29-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 313 326 }, 314 327 /* VMX_VMCSFIELD_WIDTH_64BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */ … … 320 333 /* 4-11 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 321 334 /* 12-19 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 322 /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 335 /* 20-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 336 /* 28-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 323 337 }, 324 338 /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_CONTROL: */ … … 343 357 /* 17 */ RT_UOFFSETOF(VMXVVMCS, u32PleWindow), 344 358 /* 18-25 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 345 /* 26-27 */ UINT16_MAX, UINT16_MAX 359 /* 26-33 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 360 /* 34 */ UINT16_MAX 346 361 }, 347 362 /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */ … … 357 372 /* 8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 358 373 /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 359 /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 374 /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 375 /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 360 376 }, 361 377 /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_GUEST_STATE: */ … … 385 401 /* 22 */ UINT16_MAX, 386 402 /* 23 */ RT_UOFFSETOF(VMXVVMCS, u32PreemptTimer), 387 /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 403 /* 24-31 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 404 /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 388 405 }, 389 406 /* VMX_VMCSFIELD_WIDTH_32BIT | VMX_VMCSFIELD_TYPE_HOST_STATE: */ … … 393 410 /* 9-16 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 394 411 /* 17-24 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 395 /* 25-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 412 /* 25-32 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 413 /* 33-34 */ UINT16_MAX, UINT16_MAX 396 414 }, 397 415 /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_CONTROL: */ … … 407 425 /* 8-15 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 408 426 /* 16-23 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 409 /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 427 /* 24-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 428 /* 32-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX 410 429 }, 411 430 /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_VMEXIT_INFO: */ … … 419 438 /* 6-13 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 420 439 /* 14-21 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 421 /* 22-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 440 /* 22-29 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 441 /* 30-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 422 442 }, 423 443 /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_GUEST_STATE: */ … … 446 466 /* 21 */ RT_UOFFSETOF(VMXVVMCS, u64GuestSsp), 447 467 /* 22 */ RT_UOFFSETOF(VMXVVMCS, u64GuestIntrSspTableAddrMsr), 448 /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 468 /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 469 /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 449 470 }, 450 471 /* VMX_VMCSFIELD_WIDTH_NATURAL | VMX_VMCSFIELD_TYPE_HOST_STATE: */ … … 466 487 /* 14 */ RT_UOFFSETOF(VMXVVMCS, u64HostIntrSspTableAddrMsr), 467 488 /* 15-22 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 468 /* 23-27 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 489 /* 23-30 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, 490 /* 31-34 */ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX 469 491 } 470 492 }; -
trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h
r97248 r97262 328 328 VMX_VMCS16_POSTED_INT_NOTIFY_VECTOR, 329 329 VMX_VMCS16_EPTP_INDEX, 330 VMX_VMCS16_HLAT_PREFIX_SIZE, 330 331 331 332 /* 16-bit guest-state fields. */ … … 407 408 VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_FULL, 408 409 VMX_VMCS64_CTRL_ENCLV_EXITING_BITMAP_HIGH, 410 VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_FULL, 411 VMX_VMCS64_CTRL_PCONFIG_EXITING_BITMAP_HIGH, 412 VMX_VMCS64_CTRL_HLAT_PTR_FULL, 413 VMX_VMCS64_CTRL_HLAT_PTR_HIGH, 414 VMX_VMCS64_CTRL_EXIT2_FULL, 415 VMX_VMCS64_CTRL_EXIT2_HIGH, 409 416 410 417 /* 64-bit read-only data fields. */ -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r97231 r97262 386 386 SSMFIELD_ENTRY( VMXVVMCS, u16PostIntNotifyVector), 387 387 SSMFIELD_ENTRY( VMXVVMCS, u16EptpIndex), 388 SSMFIELD_ENTRY_VER( VMXVVMCS, u16HlatPrefixSize, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3), 388 389 SSMFIELD_ENTRY_IGNORE(VMXVVMCS, au16Reserved0), 389 390 … … 436 437 SSMFIELD_ENTRY_VER( VMXVVMCS, u64ProcCtls3, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2), 437 438 SSMFIELD_ENTRY_VER( VMXVVMCS, u64EnclvExitBitmap, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2), 439 SSMFIELD_ENTRY_VER( VMXVVMCS, u64PconfigExitBitmap, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3), 440 SSMFIELD_ENTRY_VER( VMXVVMCS, u64HlatPtr, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3), 441 SSMFIELD_ENTRY_VER( VMXVVMCS, u64ExitCtls2, CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3), 438 442 SSMFIELD_ENTRY_IGNORE(VMXVVMCS, au64Reserved0), 439 443 … … 1453 1457 | (pGuestFeatures->fVmxExitSaveEferMsr << VMX_BF_EXIT_CTLS_SAVE_EFER_MSR_SHIFT ) 1454 1458 | (pGuestFeatures->fVmxExitLoadEferMsr << VMX_BF_EXIT_CTLS_LOAD_EFER_MSR_SHIFT ) 1455 | (pGuestFeatures->fVmxSavePreemptTimer << VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT ); 1459 | (pGuestFeatures->fVmxSavePreemptTimer << VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT ) 1460 | (pGuestFeatures->fVmxExitCtls2 << VMX_BF_EXIT_CTLS_USE_SECONDARY_CTLS_SHIFT ); 1456 1461 /* Set the default1 class bits. See Intel spec. A.4 "VM-exit Controls". */ 1457 1462 uint32_t const fAllowed0 = VMX_EXIT_CTLS_DEFAULT1; … … 1841 1846 EmuFeat.fVmxExitLoadEferMsr = 1; 1842 1847 EmuFeat.fVmxSavePreemptTimer = 0; /* Cannot be enabled if VMX-preemption timer is disabled. */ 1848 EmuFeat.fVmxExitCtls2 = 0; 1843 1849 EmuFeat.fVmxExitSaveEferLma = 1; /* Cannot be disabled if unrestricted guest is enabled. */ 1844 1850 EmuFeat.fVmxPt = 0; … … 1922 1928 pGuestFeat->fVmxExitLoadEferMsr = (pBaseFeat->fVmxExitLoadEferMsr & EmuFeat.fVmxExitLoadEferMsr ); 1923 1929 pGuestFeat->fVmxSavePreemptTimer = (pBaseFeat->fVmxSavePreemptTimer & EmuFeat.fVmxSavePreemptTimer ); 1930 pGuestFeat->fVmxExitCtls2 = (pBaseFeat->fVmxExitCtls2 & EmuFeat.fVmxExitCtls2 ); 1924 1931 pGuestFeat->fVmxExitSaveEferLma = (pBaseFeat->fVmxExitSaveEferLma & EmuFeat.fVmxExitSaveEferLma ); 1925 1932 pGuestFeat->fVmxPt = (pBaseFeat->fVmxPt & EmuFeat.fVmxPt ); … … 2611 2618 SSMR3PutU64(pSSM, pGstCtx->hwvirt.vmx.Msrs.u64EptVpidCaps); 2612 2619 SSMR3PutU64(pSSM, pGstCtx->hwvirt.vmx.Msrs.u64ProcCtls3); 2620 SSMR3PutU64(pSSM, pGstCtx->hwvirt.vmx.Msrs.u64ExitCtls2); 2613 2621 } 2614 2622 SSMR3PutU32(pSSM, pVCpu->cpum.s.fUseFlags); … … 2644 2652 * Validate version. 2645 2653 */ 2646 if ( uVersion != CPUM_SAVED_STATE_VERSION_PAE_PDPES 2654 if ( uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3 2655 && uVersion != CPUM_SAVED_STATE_VERSION_PAE_PDPES 2647 2656 && uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2 2648 2657 && uVersion != CPUM_SAVED_STATE_VERSION_HWVIRT_VMX … … 2908 2917 if (uVersion >= CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_2) 2909 2918 SSMR3GetU64(pSSM, &pGstCtx->hwvirt.vmx.Msrs.u64ProcCtls3); 2919 if (uVersion >= CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3) 2920 SSMR3GetU64(pSSM, &pGstCtx->hwvirt.vmx.Msrs.u64ExitCtls2); 2910 2921 } 2911 2922 } … … 3776 3787 pHlp->pfnPrintf(pHlp, " %sPosted intr notify vector = %#RX16\n", pszPrefix, pVmcs->u16PostIntNotifyVector); 3777 3788 pHlp->pfnPrintf(pHlp, " %sEPTP index = %#RX16\n", pszPrefix, pVmcs->u16EptpIndex); 3789 pHlp->pfnPrintf(pHlp, " %sHLAT prefix size = %#RX16\n", pszPrefix, pVmcs->u16HlatPrefixSize); 3778 3790 3779 3791 /* 32-bit. */ … … 3835 3847 pHlp->pfnPrintf(pHlp, " %sTertiary processor ctls = %#RX64\n", pszPrefix, pVmcs->u64ProcCtls3.u); 3836 3848 pHlp->pfnPrintf(pHlp, " %sENCLV-exiting bitmap = %#RX64\n", pszPrefix, pVmcs->u64EnclvExitBitmap.u); 3849 pHlp->pfnPrintf(pHlp, " %sPCONFIG-exiting bitmap = %#RX64\n", pszPrefix, pVmcs->u64PconfigExitBitmap.u); 3850 pHlp->pfnPrintf(pHlp, " %sHLAT ptr = %#RX64\n", pszPrefix, pVmcs->u64HlatPtr.u); 3851 pHlp->pfnPrintf(pHlp, " %sSecondary VM-exit controls = %#RX64\n", pszPrefix, pVmcs->u64ExitCtls2.u); 3837 3852 3838 3853 /* Natural width. */ -
trunk/src/VBox/VMM/include/CPUMInternal.h
r97231 r97262 106 106 * @{ */ 107 107 /** The current saved state version. */ 108 #define CPUM_SAVED_STATE_VERSION CPUM_SAVED_STATE_VERSION_PAE_PDPES 108 #define CPUM_SAVED_STATE_VERSION CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3 109 /** The saved state version with more virtual VMCS fields (HLAT prefix size, 110 * PCONFIG-exiting bitmap, HLAT ptr, VM-exit ctls2) and a CPUMCTX field (VM-exit 111 * ctls2 MSR). */ 112 #define CPUM_SAVED_STATE_VERSION_HWVIRT_VMX_3 22 109 113 /** The saved state version with PAE PDPEs added. */ 110 114 #define CPUM_SAVED_STATE_VERSION_PAE_PDPES 21
Note:
See TracChangeset
for help on using the changeset viewer.

