Changeset 91427 in vbox for trunk/src/VBox
- Timestamp:
- Sep 28, 2021 8:54:40 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r91423 r91427 1525 1525 pVmcs->u32PreemptTimer = iemVmxCalcPreemptTimer(pVCpu); 1526 1526 1527 /* PDPTEs. */ 1528 /* We don't support EPT yet. */ 1529 Assert(!(pVmcs->u32ProcCtls2 & VMX_PROC_CTLS2_EPT)); 1530 pVmcs->u64GuestPdpte0.u = 0; 1531 pVmcs->u64GuestPdpte1.u = 0; 1532 pVmcs->u64GuestPdpte2.u = 0; 1533 pVmcs->u64GuestPdpte3.u = 0; 1527 /* 1528 * PAE PDPTEs. 1529 * 1530 * If EPT is enabled and PAE paging was used at the time of the VM-exit, 1531 * the PDPTEs are saved from the VMCS. Otherwise they're undefined but 1532 * we zero them for consistency. 1533 */ 1534 if ( (pVmcs->u32ProcCtls2 & VMX_PROC_CTLS2_EPT) 1535 && !(pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_IA32E_MODE_GUEST) 1536 && (pVCpu->cpum.GstCtx.cr4 & X86_CR4_PAE) 1537 && (pVCpu->cpum.GstCtx.cr0 & X86_CR0_PG)) 1538 { 1539 pVmcs->u64GuestPdpte0.u = pVCpu->cpum.GstCtx.aPaePdpes[0].u; 1540 pVmcs->u64GuestPdpte1.u = pVCpu->cpum.GstCtx.aPaePdpes[1].u; 1541 pVmcs->u64GuestPdpte2.u = pVCpu->cpum.GstCtx.aPaePdpes[2].u; 1542 pVmcs->u64GuestPdpte3.u = pVCpu->cpum.GstCtx.aPaePdpes[3].u; 1543 } 1544 else 1545 { 1546 pVmcs->u64GuestPdpte0.u = 0; 1547 pVmcs->u64GuestPdpte1.u = 0; 1548 pVmcs->u64GuestPdpte2.u = 0; 1549 pVmcs->u64GuestPdpte3.u = 0; 1550 } 1534 1551 } 1535 1552 … … 5638 5655 const char * const pszFailure = "VM-exit"; 5639 5656 5640 bool const fGstInLongMode = RT_BOOL(pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_IA32E_MODE_GUEST); 5641 if ( !fGstInLongMode 5642 && (pVmcs->u64GuestCr4.u & X86_CR4_PAE) 5643 && (pVmcs->u64GuestCr0.u & X86_CR0_PG)) 5657 if ( !(pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_IA32E_MODE_GUEST) 5658 && (pVmcs->u64GuestCr4.u & X86_CR4_PAE) 5659 && (pVmcs->u64GuestCr0.u & X86_CR0_PG)) 5644 5660 { 5645 5661 /* Get the PDPTEs. */
Note:
See TracChangeset
for help on using the changeset viewer.