Changeset 76198 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Dec 13, 2018 7:17:44 AM (6 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r76050 r76198 6227 6227 VMXCTLSMSR EntryCtls; 6228 6228 EntryCtls.u = CPUMGetGuestIa32VmxEntryCtls(pVCpu); 6229 if (~pVmcs->u32EntryCtls & EntryCtls.n. disallowed0)6229 if (~pVmcs->u32EntryCtls & EntryCtls.n.allowed0) 6230 6230 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_EntryCtlsDisallowed0); 6231 6231 … … 6330 6330 VMXCTLSMSR ExitCtls; 6331 6331 ExitCtls.u = CPUMGetGuestIa32VmxExitCtls(pVCpu); 6332 if (~pVmcs->u32ExitCtls & ExitCtls.n. disallowed0)6332 if (~pVmcs->u32ExitCtls & ExitCtls.n.allowed0) 6333 6333 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_ExitCtlsDisallowed0); 6334 6334 … … 6385 6385 VMXCTLSMSR PinCtls; 6386 6386 PinCtls.u = CPUMGetGuestIa32VmxPinbasedCtls(pVCpu); 6387 if (~pVmcs->u32PinCtls & PinCtls.n. disallowed0)6387 if (~pVmcs->u32PinCtls & PinCtls.n.allowed0) 6388 6388 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_PinCtlsDisallowed0); 6389 6389 … … 6396 6396 VMXCTLSMSR ProcCtls; 6397 6397 ProcCtls.u = CPUMGetGuestIa32VmxProcbasedCtls(pVCpu); 6398 if (~pVmcs->u32ProcCtls & ProcCtls.n. disallowed0)6398 if (~pVmcs->u32ProcCtls & ProcCtls.n.allowed0) 6399 6399 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_ProcCtlsDisallowed0); 6400 6400 … … 6408 6408 VMXCTLSMSR ProcCtls2; 6409 6409 ProcCtls2.u = CPUMGetGuestIa32VmxProcbasedCtls2(pVCpu); 6410 if (~pVmcs->u32ProcCtls2 & ProcCtls2.n. disallowed0)6410 if (~pVmcs->u32ProcCtls2 & ProcCtls2.n.allowed0) 6411 6411 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_ProcCtls2Disallowed0); 6412 6412 -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r76136 r76198 2288 2288 { 2289 2289 PVM pVM = pVCpu->CTX_SUFF(pVM); 2290 uint32_t fVal = pVM->hm.s.vmx.Msrs.PinCtls.n. disallowed0;/* Bits set here must always be set. */2290 uint32_t fVal = pVM->hm.s.vmx.Msrs.PinCtls.n.allowed0; /* Bits set here must always be set. */ 2291 2291 uint32_t const fZap = pVM->hm.s.vmx.Msrs.PinCtls.n.allowed1; /* Bits cleared here must always be cleared. */ 2292 2292 … … 2317 2317 { 2318 2318 LogRelFunc(("Invalid pin-based VM-execution controls combo! Cpu=%#RX32 fVal=%#RX32 fZap=%#RX32\n", 2319 pVM->hm.s.vmx.Msrs.PinCtls.n. disallowed0, fVal, fZap));2319 pVM->hm.s.vmx.Msrs.PinCtls.n.allowed0, fVal, fZap)); 2320 2320 pVCpu->hm.s.u32HMError = VMX_UFC_CTRL_PIN_EXEC; 2321 2321 return VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO; … … 2343 2343 { 2344 2344 PVM pVM = pVCpu->CTX_SUFF(pVM); 2345 uint32_t fVal = pVM->hm.s.vmx.Msrs.ProcCtls2.n. disallowed0;/* Bits set here must be set in the VMCS. */2345 uint32_t fVal = pVM->hm.s.vmx.Msrs.ProcCtls2.n.allowed0; /* Bits set here must be set in the VMCS. */ 2346 2346 uint32_t const fZap = pVM->hm.s.vmx.Msrs.ProcCtls2.n.allowed1; /* Bits cleared here must be cleared in the VMCS. */ 2347 2347 … … 2414 2414 { 2415 2415 LogRelFunc(("Invalid secondary processor-based VM-execution controls combo! cpu=%#RX32 fVal=%#RX32 fZap=%#RX32\n", 2416 pVM->hm.s.vmx.Msrs.ProcCtls2.n. disallowed0, fVal, fZap));2416 pVM->hm.s.vmx.Msrs.ProcCtls2.n.allowed0, fVal, fZap)); 2417 2417 pVCpu->hm.s.u32HMError = VMX_UFC_CTRL_PROC_EXEC2; 2418 2418 return VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO; … … 2440 2440 { 2441 2441 PVM pVM = pVCpu->CTX_SUFF(pVM); 2442 uint32_t fVal = pVM->hm.s.vmx.Msrs.ProcCtls.n. disallowed0;/* Bits set here must be set in the VMCS. */2442 uint32_t fVal = pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed0; /* Bits set here must be set in the VMCS. */ 2443 2443 uint32_t const fZap = pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed1; /* Bits cleared here must be cleared in the VMCS. */ 2444 2444 … … 2453 2453 /* We toggle VMX_PROC_CTLS_MOV_DR_EXIT later, check if it's not -always- needed to be set or clear. */ 2454 2454 if ( !(pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed1 & VMX_PROC_CTLS_MOV_DR_EXIT) 2455 || (pVM->hm.s.vmx.Msrs.ProcCtls.n. disallowed0 & VMX_PROC_CTLS_MOV_DR_EXIT))2455 || (pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed0 & VMX_PROC_CTLS_MOV_DR_EXIT)) 2456 2456 { 2457 2457 LogRelFunc(("Unsupported VMX_PROC_CTLS_MOV_DR_EXIT combo!")); … … 2545 2545 { 2546 2546 LogRelFunc(("Invalid processor-based VM-execution controls combo! cpu=%#RX32 fVal=%#RX32 fZap=%#RX32\n", 2547 pVM->hm.s.vmx.Msrs.ProcCtls.n. disallowed0, fVal, fZap));2547 pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed0, fVal, fZap)); 2548 2548 pVCpu->hm.s.u32HMError = VMX_UFC_CTRL_PROC_EXEC; 2549 2549 return VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO; … … 3227 3227 { 3228 3228 PVM pVM = pVCpu->CTX_SUFF(pVM); 3229 uint32_t fVal = pVM->hm.s.vmx.Msrs.EntryCtls.n. disallowed0;/* Bits set here must be set in the VMCS. */3229 uint32_t fVal = pVM->hm.s.vmx.Msrs.EntryCtls.n.allowed0; /* Bits set here must be set in the VMCS. */ 3230 3230 uint32_t const fZap = pVM->hm.s.vmx.Msrs.EntryCtls.n.allowed1; /* Bits cleared here must be cleared in the VMCS. */ 3231 3231 … … 3261 3261 if ((fVal & fZap) != fVal) 3262 3262 { 3263 Log4Func(("Invalid VM-entry controls combo! Cpu=% RX32 fVal=%RX32 fZap=%RX32\n",3264 pVM->hm.s.vmx.Msrs.EntryCtls.n. disallowed0, fVal, fZap));3263 Log4Func(("Invalid VM-entry controls combo! Cpu=%#RX32 fVal=%#RX32 fZap=%#RX32\n", 3264 pVM->hm.s.vmx.Msrs.EntryCtls.n.allowed0, fVal, fZap)); 3265 3265 pVCpu->hm.s.u32HMError = VMX_UFC_CTRL_ENTRY; 3266 3266 return VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO; … … 3294 3294 { 3295 3295 PVM pVM = pVCpu->CTX_SUFF(pVM); 3296 uint32_t fVal = pVM->hm.s.vmx.Msrs.ExitCtls.n. disallowed0;/* Bits set here must be set in the VMCS. */3296 uint32_t fVal = pVM->hm.s.vmx.Msrs.ExitCtls.n.allowed0; /* Bits set here must be set in the VMCS. */ 3297 3297 uint32_t const fZap = pVM->hm.s.vmx.Msrs.ExitCtls.n.allowed1; /* Bits cleared here must be cleared in the VMCS. */ 3298 3298 … … 3345 3345 if ((fVal & fZap) != fVal) 3346 3346 { 3347 LogRelFunc(("Invalid VM-exit controls combo! cpu=% RX32 fVal=%RX32 fZap=%RX32\n",3348 pVM->hm.s.vmx.Msrs.ExitCtls.n. disallowed0, fVal, fZap));3347 LogRelFunc(("Invalid VM-exit controls combo! cpu=%#RX32 fVal=%#RX32 fZap=%R#X32\n", 3348 pVM->hm.s.vmx.Msrs.ExitCtls.n.allowed0, fVal, fZap)); 3349 3349 pVCpu->hm.s.u32HMError = VMX_UFC_CTRL_EXIT; 3350 3350 return VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO; … … 9435 9435 pDbgState->fCpe1Extra |= VMX_PROC_CTLS_USE_SECONDARY_CTLS; 9436 9436 pDbgState->fCpe1Extra &= pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed1; 9437 pDbgState->fCpe1Unwanted &= ~pVM->hm.s.vmx.Msrs.ProcCtls.n. disallowed0;9437 pDbgState->fCpe1Unwanted &= ~pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed0; 9438 9438 if (pVCpu->hm.s.fDebugWantRdTscExit != RT_BOOL(pDbgState->fCpe1Extra & VMX_PROC_CTLS_RDTSC_EXIT)) 9439 9439 { -
trunk/src/VBox/VMM/VMMR3/HM.cpp
r76137 r76198 333 333 * Reports VT-x feature to the release log. 334 334 * 335 * @param a llowed1 Mask of allowedfeature bits.336 * @param disallowed0 Mask of disallowedfeature bits.337 * @param strdesc The description string to report.338 * @param featflag Mask of the feature to report.339 */ 340 #define HMVMX_REPORT_FEAT(a llowed1, disallowed0, strdesc, featflag) \335 * @param a_uAllowed1 Mask of allowed-1 feature bits. 336 * @param a_uAllowed0 Mask of allowed-0 feature bits. 337 * @param a_StrDesc The description string to report. 338 * @param a_Featflag Mask of the feature to report. 339 */ 340 #define HMVMX_REPORT_FEAT(a_uAllowed1, a_uAllowed0, a_StrDesc, a_Featflag) \ 341 341 do { \ 342 if ((a llowed1) & (featflag)) \342 if ((a_uAllowed1) & (a_Featflag)) \ 343 343 { \ 344 if (( disallowed0) & (featflag)) \345 LogRel(("HM: " strdesc " (must be set)\n")); \344 if ((a_uAllowed0) & (a_Featflag)) \ 345 LogRel(("HM: " a_StrDesc " (must be set)\n")); \ 346 346 else \ 347 LogRel(("HM: " strdesc "\n")); \347 LogRel(("HM: " a_StrDesc "\n")); \ 348 348 } \ 349 349 else \ 350 LogRel(("HM: " strdesc " (must be cleared)\n")); \350 LogRel(("HM: " a_StrDesc " (must be cleared)\n")); \ 351 351 } while (0) 352 352 … … 354 354 * Reports an allowed VT-x feature to the release log. 355 355 * 356 * @param a llowed1 Mask of allowedfeature bits.357 * @param strdescThe description string to report.358 * @param featflagMask of the feature to report.359 */ 360 #define HMVMX_REPORT_ALLOWED_FEAT(a llowed1, strdesc, featflag) \356 * @param a_uAllowed1 Mask of allowed-1 feature bits. 357 * @param a_StrDesc The description string to report. 358 * @param a_FeatFlag Mask of the feature to report. 359 */ 360 #define HMVMX_REPORT_ALLOWED_FEAT(a_uAllowed1, a_StrDesc, a_FeatFlag) \ 361 361 do { \ 362 if ((a llowed1) & (featflag)) \363 LogRel(("HM: " strdesc "\n")); \362 if ((a_uAllowed1) & (a_FeatFlag)) \ 363 LogRel(("HM: " a_StrDesc "\n")); \ 364 364 else \ 365 LogRel(("HM: " strdesc " not supported\n")); \365 LogRel(("HM: " a_StrDesc " not supported\n")); \ 366 366 } while (0) 367 367 … … 369 369 * Reports MSR feature capability. 370 370 * 371 * @param msrcapsMask of MSR feature bits.372 * @param strdescThe description string to report.373 * @param capMask of the feature to report.374 */ 375 #define HMVMX_REPORT_MSR_CAP( msrcaps, strdesc, cap) \371 * @param a_MsrCaps Mask of MSR feature bits. 372 * @param a_StrDesc The description string to report. 373 * @param a_fCap Mask of the feature to report. 374 */ 375 #define HMVMX_REPORT_MSR_CAP(a_MsrCaps, a_StrDesc, a_fCap) \ 376 376 do { \ 377 if (( msrcaps) & (cap)) \378 LogRel(("HM: " strdesc "\n")); \377 if ((a_MsrCaps) & (a_fCap)) \ 378 LogRel(("HM: " a_StrDesc "\n")); \ 379 379 } while (0) 380 380 … … 1443 1443 static void hmR3VmxReportPinBasedCtlsMsr(PCVMXCTLSMSR pVmxMsr) 1444 1444 { 1445 uint64_t const val= pVmxMsr->n.allowed1;1446 uint64_t const zap = pVmxMsr->n.disallowed0;1445 uint64_t const fAllowed1 = pVmxMsr->n.allowed1; 1446 uint64_t const fAllowed0 = pVmxMsr->n.allowed0; 1447 1447 LogRel(("HM: MSR_IA32_VMX_PINBASED_CTLS = %#RX64\n", pVmxMsr->u)); 1448 HMVMX_REPORT_FEAT( val, zap, "EXT_INT_EXIT", VMX_PIN_CTLS_EXT_INT_EXIT);1449 HMVMX_REPORT_FEAT( val, zap, "NMI_EXIT", VMX_PIN_CTLS_NMI_EXIT);1450 HMVMX_REPORT_FEAT( val, zap, "VIRTUAL_NMI", VMX_PIN_CTLS_VIRT_NMI);1451 HMVMX_REPORT_FEAT( val, zap, "PREEMPT_TIMER", VMX_PIN_CTLS_PREEMPT_TIMER);1452 HMVMX_REPORT_FEAT( val, zap, "POSTED_INT", VMX_PIN_CTLS_POSTED_INT);1448 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "EXT_INT_EXIT", VMX_PIN_CTLS_EXT_INT_EXIT); 1449 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "NMI_EXIT", VMX_PIN_CTLS_NMI_EXIT); 1450 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VIRTUAL_NMI", VMX_PIN_CTLS_VIRT_NMI); 1451 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "PREEMPT_TIMER", VMX_PIN_CTLS_PREEMPT_TIMER); 1452 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "POSTED_INT", VMX_PIN_CTLS_POSTED_INT); 1453 1453 } 1454 1454 … … 1461 1461 static void hmR3VmxReportProcBasedCtlsMsr(PCVMXCTLSMSR pVmxMsr) 1462 1462 { 1463 uint64_t const val= pVmxMsr->n.allowed1;1464 uint64_t const zap = pVmxMsr->n.disallowed0;1463 uint64_t const fAllowed1 = pVmxMsr->n.allowed1; 1464 uint64_t const fAllowed0 = pVmxMsr->n.allowed0; 1465 1465 LogRel(("HM: MSR_IA32_VMX_PROCBASED_CTLS = %#RX64\n", pVmxMsr->u)); 1466 HMVMX_REPORT_FEAT( val, zap, "INT_WINDOW_EXIT", VMX_PROC_CTLS_INT_WINDOW_EXIT);1467 HMVMX_REPORT_FEAT( val, zap, "USE_TSC_OFFSETTING", VMX_PROC_CTLS_USE_TSC_OFFSETTING);1468 HMVMX_REPORT_FEAT( val, zap, "HLT_EXIT", VMX_PROC_CTLS_HLT_EXIT);1469 HMVMX_REPORT_FEAT( val, zap, "INVLPG_EXIT", VMX_PROC_CTLS_INVLPG_EXIT);1470 HMVMX_REPORT_FEAT( val, zap, "MWAIT_EXIT", VMX_PROC_CTLS_MWAIT_EXIT);1471 HMVMX_REPORT_FEAT( val, zap, "RDPMC_EXIT", VMX_PROC_CTLS_RDPMC_EXIT);1472 HMVMX_REPORT_FEAT( val, zap, "RDTSC_EXIT", VMX_PROC_CTLS_RDTSC_EXIT);1473 HMVMX_REPORT_FEAT( val, zap, "CR3_LOAD_EXIT", VMX_PROC_CTLS_CR3_LOAD_EXIT);1474 HMVMX_REPORT_FEAT( val, zap, "CR3_STORE_EXIT", VMX_PROC_CTLS_CR3_STORE_EXIT);1475 HMVMX_REPORT_FEAT( val, zap, "CR8_LOAD_EXIT", VMX_PROC_CTLS_CR8_LOAD_EXIT);1476 HMVMX_REPORT_FEAT( val, zap, "CR8_STORE_EXIT", VMX_PROC_CTLS_CR8_STORE_EXIT);1477 HMVMX_REPORT_FEAT( val, zap, "USE_TPR_SHADOW", VMX_PROC_CTLS_USE_TPR_SHADOW);1478 HMVMX_REPORT_FEAT( val, zap, "NMI_WINDOW_EXIT", VMX_PROC_CTLS_NMI_WINDOW_EXIT);1479 HMVMX_REPORT_FEAT( val, zap, "MOV_DR_EXIT", VMX_PROC_CTLS_MOV_DR_EXIT);1480 HMVMX_REPORT_FEAT( val, zap, "UNCOND_IO_EXIT", VMX_PROC_CTLS_UNCOND_IO_EXIT);1481 HMVMX_REPORT_FEAT( val, zap, "USE_IO_BITMAPS", VMX_PROC_CTLS_USE_IO_BITMAPS);1482 HMVMX_REPORT_FEAT( val, zap, "MONITOR_TRAP_FLAG", VMX_PROC_CTLS_MONITOR_TRAP_FLAG);1483 HMVMX_REPORT_FEAT( val, zap, "USE_MSR_BITMAPS", VMX_PROC_CTLS_USE_MSR_BITMAPS);1484 HMVMX_REPORT_FEAT( val, zap, "MONITOR_EXIT", VMX_PROC_CTLS_MONITOR_EXIT);1485 HMVMX_REPORT_FEAT( val, zap, "PAUSE_EXIT", VMX_PROC_CTLS_PAUSE_EXIT);1486 HMVMX_REPORT_FEAT( val, zap, "USE_SECONDARY_CTLS", VMX_PROC_CTLS_USE_SECONDARY_CTLS);1466 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "INT_WINDOW_EXIT", VMX_PROC_CTLS_INT_WINDOW_EXIT); 1467 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "USE_TSC_OFFSETTING", VMX_PROC_CTLS_USE_TSC_OFFSETTING); 1468 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "HLT_EXIT", VMX_PROC_CTLS_HLT_EXIT); 1469 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "INVLPG_EXIT", VMX_PROC_CTLS_INVLPG_EXIT); 1470 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "MWAIT_EXIT", VMX_PROC_CTLS_MWAIT_EXIT); 1471 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "RDPMC_EXIT", VMX_PROC_CTLS_RDPMC_EXIT); 1472 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "RDTSC_EXIT", VMX_PROC_CTLS_RDTSC_EXIT); 1473 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "CR3_LOAD_EXIT", VMX_PROC_CTLS_CR3_LOAD_EXIT); 1474 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "CR3_STORE_EXIT", VMX_PROC_CTLS_CR3_STORE_EXIT); 1475 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "CR8_LOAD_EXIT", VMX_PROC_CTLS_CR8_LOAD_EXIT); 1476 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "CR8_STORE_EXIT", VMX_PROC_CTLS_CR8_STORE_EXIT); 1477 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "USE_TPR_SHADOW", VMX_PROC_CTLS_USE_TPR_SHADOW); 1478 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "NMI_WINDOW_EXIT", VMX_PROC_CTLS_NMI_WINDOW_EXIT); 1479 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "MOV_DR_EXIT", VMX_PROC_CTLS_MOV_DR_EXIT); 1480 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "UNCOND_IO_EXIT", VMX_PROC_CTLS_UNCOND_IO_EXIT); 1481 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "USE_IO_BITMAPS", VMX_PROC_CTLS_USE_IO_BITMAPS); 1482 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "MONITOR_TRAP_FLAG", VMX_PROC_CTLS_MONITOR_TRAP_FLAG); 1483 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "USE_MSR_BITMAPS", VMX_PROC_CTLS_USE_MSR_BITMAPS); 1484 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "MONITOR_EXIT", VMX_PROC_CTLS_MONITOR_EXIT); 1485 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "PAUSE_EXIT", VMX_PROC_CTLS_PAUSE_EXIT); 1486 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "USE_SECONDARY_CTLS", VMX_PROC_CTLS_USE_SECONDARY_CTLS); 1487 1487 } 1488 1488 … … 1495 1495 static void hmR3VmxReportProcBasedCtls2Msr(PCVMXCTLSMSR pVmxMsr) 1496 1496 { 1497 uint64_t const val= pVmxMsr->n.allowed1;1498 uint64_t const zap = pVmxMsr->n.disallowed0;1497 uint64_t const fAllowed1 = pVmxMsr->n.allowed1; 1498 uint64_t const fAllowed0 = pVmxMsr->n.allowed0; 1499 1499 LogRel(("HM: MSR_IA32_VMX_PROCBASED_CTLS2 = %#RX64\n", pVmxMsr->u)); 1500 HMVMX_REPORT_FEAT( val, zap, "VIRT_APIC_ACCESS", VMX_PROC_CTLS2_VIRT_APIC_ACCESS);1501 HMVMX_REPORT_FEAT( val, zap, "EPT", VMX_PROC_CTLS2_EPT);1502 HMVMX_REPORT_FEAT( val, zap, "DESC_TABLE_EXIT", VMX_PROC_CTLS2_DESC_TABLE_EXIT);1503 HMVMX_REPORT_FEAT( val, zap, "RDTSCP", VMX_PROC_CTLS2_RDTSCP);1504 HMVMX_REPORT_FEAT( val, zap, "VIRT_X2APIC_MODE", VMX_PROC_CTLS2_VIRT_X2APIC_MODE);1505 HMVMX_REPORT_FEAT( val, zap, "VPID", VMX_PROC_CTLS2_VPID);1506 HMVMX_REPORT_FEAT( val, zap, "WBINVD_EXIT", VMX_PROC_CTLS2_WBINVD_EXIT);1507 HMVMX_REPORT_FEAT( val, zap, "UNRESTRICTED_GUEST", VMX_PROC_CTLS2_UNRESTRICTED_GUEST);1508 HMVMX_REPORT_FEAT( val, zap, "APIC_REG_VIRT", VMX_PROC_CTLS2_APIC_REG_VIRT);1509 HMVMX_REPORT_FEAT( val, zap, "VIRT_INT_DELIVERY", VMX_PROC_CTLS2_VIRT_INT_DELIVERY);1510 HMVMX_REPORT_FEAT( val, zap, "PAUSE_LOOP_EXIT", VMX_PROC_CTLS2_PAUSE_LOOP_EXIT);1511 HMVMX_REPORT_FEAT( val, zap, "RDRAND_EXIT", VMX_PROC_CTLS2_RDRAND_EXIT);1512 HMVMX_REPORT_FEAT( val, zap, "INVPCID", VMX_PROC_CTLS2_INVPCID);1513 HMVMX_REPORT_FEAT( val, zap, "VMFUNC", VMX_PROC_CTLS2_VMFUNC);1514 HMVMX_REPORT_FEAT( val, zap, "VMCS_SHADOWING", VMX_PROC_CTLS2_VMCS_SHADOWING);1515 HMVMX_REPORT_FEAT( val, zap, "ENCLS_EXIT", VMX_PROC_CTLS2_ENCLS_EXIT);1516 HMVMX_REPORT_FEAT( val, zap, "RDSEED_EXIT", VMX_PROC_CTLS2_RDSEED_EXIT);1517 HMVMX_REPORT_FEAT( val, zap, "PML", VMX_PROC_CTLS2_PML);1518 HMVMX_REPORT_FEAT( val, zap, "EPT_VE", VMX_PROC_CTLS2_EPT_VE);1519 HMVMX_REPORT_FEAT( val, zap, "CONCEAL_FROM_PT", VMX_PROC_CTLS2_CONCEAL_FROM_PT);1520 HMVMX_REPORT_FEAT( val, zap, "XSAVES_XRSTORS", VMX_PROC_CTLS2_XSAVES_XRSTORS);1521 HMVMX_REPORT_FEAT( val, zap, "TSC_SCALING", VMX_PROC_CTLS2_TSC_SCALING);1500 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VIRT_APIC_ACCESS", VMX_PROC_CTLS2_VIRT_APIC_ACCESS); 1501 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "EPT", VMX_PROC_CTLS2_EPT); 1502 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "DESC_TABLE_EXIT", VMX_PROC_CTLS2_DESC_TABLE_EXIT); 1503 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "RDTSCP", VMX_PROC_CTLS2_RDTSCP); 1504 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VIRT_X2APIC_MODE", VMX_PROC_CTLS2_VIRT_X2APIC_MODE); 1505 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VPID", VMX_PROC_CTLS2_VPID); 1506 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "WBINVD_EXIT", VMX_PROC_CTLS2_WBINVD_EXIT); 1507 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "UNRESTRICTED_GUEST", VMX_PROC_CTLS2_UNRESTRICTED_GUEST); 1508 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "APIC_REG_VIRT", VMX_PROC_CTLS2_APIC_REG_VIRT); 1509 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VIRT_INT_DELIVERY", VMX_PROC_CTLS2_VIRT_INT_DELIVERY); 1510 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "PAUSE_LOOP_EXIT", VMX_PROC_CTLS2_PAUSE_LOOP_EXIT); 1511 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "RDRAND_EXIT", VMX_PROC_CTLS2_RDRAND_EXIT); 1512 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "INVPCID", VMX_PROC_CTLS2_INVPCID); 1513 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VMFUNC", VMX_PROC_CTLS2_VMFUNC); 1514 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "VMCS_SHADOWING", VMX_PROC_CTLS2_VMCS_SHADOWING); 1515 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "ENCLS_EXIT", VMX_PROC_CTLS2_ENCLS_EXIT); 1516 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "RDSEED_EXIT", VMX_PROC_CTLS2_RDSEED_EXIT); 1517 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "PML", VMX_PROC_CTLS2_PML); 1518 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "EPT_VE", VMX_PROC_CTLS2_EPT_VE); 1519 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "CONCEAL_FROM_PT", VMX_PROC_CTLS2_CONCEAL_FROM_PT); 1520 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "XSAVES_XRSTORS", VMX_PROC_CTLS2_XSAVES_XRSTORS); 1521 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "TSC_SCALING", VMX_PROC_CTLS2_TSC_SCALING); 1522 1522 } 1523 1523 … … 1530 1530 static void hmR3VmxReportEntryCtlsMsr(PCVMXCTLSMSR pVmxMsr) 1531 1531 { 1532 uint64_t const val= pVmxMsr->n.allowed1;1533 uint64_t const zap = pVmxMsr->n.disallowed0;1532 uint64_t const fAllowed1 = pVmxMsr->n.allowed1; 1533 uint64_t const fAllowed0 = pVmxMsr->n.allowed0; 1534 1534 LogRel(("HM: MSR_IA32_VMX_ENTRY_CTLS = %#RX64\n", pVmxMsr->u)); 1535 HMVMX_REPORT_FEAT( val, zap, "LOAD_DEBUG", VMX_ENTRY_CTLS_LOAD_DEBUG);1536 HMVMX_REPORT_FEAT( val, zap, "IA32E_MODE_GUEST", VMX_ENTRY_CTLS_IA32E_MODE_GUEST);1537 HMVMX_REPORT_FEAT( val, zap, "ENTRY_TO_SMM", VMX_ENTRY_CTLS_ENTRY_TO_SMM);1538 HMVMX_REPORT_FEAT( val, zap, "DEACTIVATE_DUAL_MON", VMX_ENTRY_CTLS_DEACTIVATE_DUAL_MON);1539 HMVMX_REPORT_FEAT( val, zap, "LOAD_PERF_MSR", VMX_ENTRY_CTLS_LOAD_PERF_MSR);1540 HMVMX_REPORT_FEAT( val, zap, "LOAD_PAT_MSR", VMX_ENTRY_CTLS_LOAD_PAT_MSR);1541 HMVMX_REPORT_FEAT( val, zap, "LOAD_EFER_MSR", VMX_ENTRY_CTLS_LOAD_EFER_MSR);1535 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_DEBUG", VMX_ENTRY_CTLS_LOAD_DEBUG); 1536 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "IA32E_MODE_GUEST", VMX_ENTRY_CTLS_IA32E_MODE_GUEST); 1537 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "ENTRY_TO_SMM", VMX_ENTRY_CTLS_ENTRY_TO_SMM); 1538 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "DEACTIVATE_DUAL_MON", VMX_ENTRY_CTLS_DEACTIVATE_DUAL_MON); 1539 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_PERF_MSR", VMX_ENTRY_CTLS_LOAD_PERF_MSR); 1540 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_PAT_MSR", VMX_ENTRY_CTLS_LOAD_PAT_MSR); 1541 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_EFER_MSR", VMX_ENTRY_CTLS_LOAD_EFER_MSR); 1542 1542 } 1543 1543 … … 1550 1550 static void hmR3VmxReportExitCtlsMsr(PCVMXCTLSMSR pVmxMsr) 1551 1551 { 1552 uint64_t const val= pVmxMsr->n.allowed1;1553 uint64_t const zap = pVmxMsr->n.disallowed0;1552 uint64_t const fAllowed1 = pVmxMsr->n.allowed1; 1553 uint64_t const fAllowed0 = pVmxMsr->n.allowed0; 1554 1554 LogRel(("HM: MSR_IA32_VMX_EXIT_CTLS = %#RX64\n", pVmxMsr->u)); 1555 HMVMX_REPORT_FEAT( val, zap, "SAVE_DEBUG", VMX_EXIT_CTLS_SAVE_DEBUG);1556 HMVMX_REPORT_FEAT( val, zap, "HOST_ADDR_SPACE_SIZE", VMX_EXIT_CTLS_HOST_ADDR_SPACE_SIZE);1557 HMVMX_REPORT_FEAT( val, zap, "LOAD_PERF_MSR", VMX_EXIT_CTLS_LOAD_PERF_MSR);1558 HMVMX_REPORT_FEAT( val, zap, "ACK_EXT_INT", VMX_EXIT_CTLS_ACK_EXT_INT);1559 HMVMX_REPORT_FEAT( val, zap, "SAVE_PAT_MSR", VMX_EXIT_CTLS_SAVE_PAT_MSR);1560 HMVMX_REPORT_FEAT( val, zap, "LOAD_PAT_MSR", VMX_EXIT_CTLS_LOAD_PAT_MSR);1561 HMVMX_REPORT_FEAT( val, zap, "SAVE_EFER_MSR", VMX_EXIT_CTLS_SAVE_EFER_MSR);1562 HMVMX_REPORT_FEAT( val, zap, "LOAD_EFER_MSR", VMX_EXIT_CTLS_LOAD_EFER_MSR);1563 HMVMX_REPORT_FEAT( val, zap, "SAVE_PREEMPT_TIMER", VMX_EXIT_CTLS_SAVE_PREEMPT_TIMER);1555 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "SAVE_DEBUG", VMX_EXIT_CTLS_SAVE_DEBUG); 1556 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "HOST_ADDR_SPACE_SIZE", VMX_EXIT_CTLS_HOST_ADDR_SPACE_SIZE); 1557 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_PERF_MSR", VMX_EXIT_CTLS_LOAD_PERF_MSR); 1558 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "ACK_EXT_INT", VMX_EXIT_CTLS_ACK_EXT_INT); 1559 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "SAVE_PAT_MSR", VMX_EXIT_CTLS_SAVE_PAT_MSR); 1560 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_PAT_MSR", VMX_EXIT_CTLS_LOAD_PAT_MSR); 1561 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "SAVE_EFER_MSR", VMX_EXIT_CTLS_SAVE_EFER_MSR); 1562 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "LOAD_EFER_MSR", VMX_EXIT_CTLS_LOAD_EFER_MSR); 1563 HMVMX_REPORT_FEAT(fAllowed1, fAllowed0, "SAVE_PREEMPT_TIMER", VMX_EXIT_CTLS_SAVE_PREEMPT_TIMER); 1564 1564 } 1565 1565 … … 3208 3208 if (iStatusCode == VERR_VMX_UNABLE_TO_START_VM) 3209 3209 { 3210 LogRel(("HM: VERR_VMX_UNABLE_TO_START_VM: VM-entry allowed 3211 LogRel(("HM: VERR_VMX_UNABLE_TO_START_VM: VM-entry disallowed %#RX32\n", pVM->hm.s.vmx.Msrs.EntryCtls.n.disallowed0));3210 LogRel(("HM: VERR_VMX_UNABLE_TO_START_VM: VM-entry allowed-1 %#RX32\n", pVM->hm.s.vmx.Msrs.EntryCtls.n.allowed1)); 3211 LogRel(("HM: VERR_VMX_UNABLE_TO_START_VM: VM-entry allowed-0 %#RX32\n", pVM->hm.s.vmx.Msrs.EntryCtls.n.allowed0)); 3212 3212 } 3213 3213 else if (iStatusCode == VERR_VMX_INVALID_VMXON_PTR)
Note:
See TracChangeset
for help on using the changeset viewer.