- Timestamp:
- Aug 8, 2019 8:35:30 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r80192 r80196 5000 5000 /** @todo r=ramshankar: Warning!! We ASSUME EFLAGS.TF will not cleared on 5001 5001 * premature trips to ring-3 esp since IEM does not yet handle it. */ 5002 rc = VMXWriteVmcs 32(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS);5002 rc = VMXWriteVmcsNw(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS); 5003 5003 AssertRC(rc); 5004 5004 } 5005 /** @todo NSTVMX: Handling copying of VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS from 5006 * nested-guest VMCS. */ 5005 /* else: for nested-guest currently handling while merging controls. */ 5007 5006 5008 5007 ASMAtomicUoAndU64(&pVCpu->hm.s.fCtxChanged, ~HM_CHANGED_GUEST_RFLAGS); … … 5454 5453 HMVMX_CPUMCTX_ASSERT(pVCpu, CPUMCTX_EXTRN_CR3); 5455 5454 5456 RTGCPHYS GCPhysGuestCr3 = NIL_RTGCPHYS;5457 5455 if (pVM->hm.s.fNestedPaging) 5458 5456 { … … 5480 5478 AssertRC(rc); 5481 5479 5482 PCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 5480 uint64_t u64GuestCr3; 5481 PCCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 5483 5482 if ( pVM->hm.s.vmx.fUnrestrictedGuest 5484 5483 || CPUMIsGuestPagingEnabledEx(pCtx)) … … 5500 5499 * the guest when it's not using paging. 5501 5500 */ 5502 GCPhysGuestCr3 = pCtx->cr3;5501 u64GuestCr3 = pCtx->cr3; 5503 5502 } 5504 5503 else … … 5525 5524 AssertMsgFailedReturn(("%Rrc\n", rc), rc); 5526 5525 5527 GCPhysGuestCr3 = GCPhys;5526 u64GuestCr3 = GCPhys; 5528 5527 } 5529 5528 5530 Log4Func((" u32GuestCr3=%#RGp (GstN)\n", GCPhysGuestCr3));5531 rc = VMXWriteVmcsNw(VMX_VMCS_GUEST_CR3, GCPhysGuestCr3);5529 Log4Func(("guest_cr3=%#RX64 (GstN)\n", u64GuestCr3)); 5530 rc = VMXWriteVmcsNw(VMX_VMCS_GUEST_CR3, u64GuestCr3); 5532 5531 AssertRC(rc); 5533 5532 } … … 5537 5536 RTHCPHYS const HCPhysGuestCr3 = PGMGetHyperCR3(pVCpu); 5538 5537 5539 Log4Func((" u32GuestCr3=%#RHv(HstN)\n", HCPhysGuestCr3));5538 Log4Func(("guest_cr3=%#RX64 (HstN)\n", HCPhysGuestCr3)); 5540 5539 rc = VMXWriteVmcsNw(VMX_VMCS_GUEST_CR3, HCPhysGuestCr3); 5541 5540 AssertRC(rc); … … 9623 9622 9624 9623 /* Pending debug exceptions. */ 9625 rc = VMXReadVmcs 64(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, &u64Val);9624 rc = VMXReadVmcsNw(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, &u64Val); 9626 9625 AssertRC(rc); 9627 9626 /* Bits 63:15, Bit 13, Bits 11:4 MBZ. */ … … 9981 9980 9982 9981 /* 9982 * Pending debug exceptions. 9983 * Currently just copy whatever the nested-guest provides us. 9984 */ 9985 uint64_t const uPendingDbgXcpt = pVmcsNstGst->u64GuestPendingDbgXcpt.u; 9986 9987 /* 9983 9988 * I/O Bitmap. 9984 9989 * … … 10112 10117 if (u32ProcCtls2 & VMX_PROC_CTLS2_VIRT_APIC_ACCESS) 10113 10118 rc |= VMXWriteVmcs64(VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL, HCPhysApicAccess); 10119 rc |= VMXWriteVmcsNw(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, uPendingDbgXcpt); 10114 10120 AssertRC(rc); 10115 10121
Note:
See TracChangeset
for help on using the changeset viewer.