Changeset 80387 in vbox for trunk/src/VBox
- Timestamp:
- Aug 22, 2019 2:44:42 PM (5 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/HMVMXAll.cpp
r80364 r80387 949 949 LogRel((" %srip = %#RX64\n", pszPrefix, pVmcs->u64GuestRip.u)); 950 950 LogRel((" %srflags = %#RX64\n", pszPrefix, pVmcs->u64GuestRFlags.u)); 951 LogRel((" %sPending debug xcpts = %#RX64\n", pszPrefix, pVmcs->u64GuestPendingDbgXcpt .u));951 LogRel((" %sPending debug xcpts = %#RX64\n", pszPrefix, pVmcs->u64GuestPendingDbgXcpts.u)); 952 952 LogRel((" %sSysEnter ESP = %#RX64\n", pszPrefix, pVmcs->u64GuestSysenterEsp.u)); 953 953 LogRel((" %sSysEnter EIP = %#RX64\n", pszPrefix, pVmcs->u64GuestSysenterEip.u)); -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r80386 r80387 416 416 /* 15 */ RT_UOFFSETOF(VMXVVMCS, u64GuestRip), 417 417 /* 16 */ RT_UOFFSETOF(VMXVVMCS, u64GuestRFlags), 418 /* 17 */ RT_UOFFSETOF(VMXVVMCS, u64GuestPendingDbgXcpt ),418 /* 17 */ RT_UOFFSETOF(VMXVVMCS, u64GuestPendingDbgXcpts), 419 419 /* 18 */ RT_UOFFSETOF(VMXVVMCS, u64GuestSysenterEsp), 420 420 /* 19 */ RT_UOFFSETOF(VMXVVMCS, u64GuestSysenterEip), … … 791 791 PVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs); 792 792 Assert(!(uGuestPendingDbgXcpts & VMX_VMCS_GUEST_PENDING_DEBUG_VALID_MASK)); 793 pVmcs->u64GuestPendingDbgXcpt .u = uGuestPendingDbgXcpts;793 pVmcs->u64GuestPendingDbgXcpts.u = uGuestPendingDbgXcpts; 794 794 } 795 795 … … 1509 1509 /** @todo NSTVMX: also must exclude VM-exits caused by debug exceptions when 1510 1510 * block-by-MovSS is in effect. */ 1511 pVmcs->u64GuestPendingDbgXcpt .u = 0;1511 pVmcs->u64GuestPendingDbgXcpts.u = 0; 1512 1512 } 1513 1513 … … 5597 5597 * Pending debug exceptions. 5598 5598 */ 5599 uint64_t const uPendingDbgXcpt = IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLongMode5600 ? pVmcs->u64GuestPendingDbgXcpt.u5601 : pVmcs->u64GuestPendingDbgXcpt.s.Lo;5602 if (!(uPendingDbgXcpt & ~VMX_VMCS_GUEST_PENDING_DEBUG_VALID_MASK))5599 uint64_t const uPendingDbgXcpts = IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLongMode 5600 ? pVmcs->u64GuestPendingDbgXcpts.u 5601 : pVmcs->u64GuestPendingDbgXcpts.s.Lo; 5602 if (!(uPendingDbgXcpts & ~VMX_VMCS_GUEST_PENDING_DEBUG_VALID_MASK)) 5603 5603 { /* likely */ } 5604 5604 else … … 5610 5610 if ( (pVmcs->u64GuestRFlags.u & X86_EFL_TF) 5611 5611 && !(pVmcs->u64GuestDebugCtlMsr.u & MSR_IA32_DEBUGCTL_BTF) 5612 && !(uPendingDbgXcpt & VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS))5612 && !(uPendingDbgXcpts & VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS)) 5613 5613 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestPndDbgXcptBsTf); 5614 5614 5615 5615 if ( ( !(pVmcs->u64GuestRFlags.u & X86_EFL_TF) 5616 5616 || (pVmcs->u64GuestDebugCtlMsr.u & MSR_IA32_DEBUGCTL_BTF)) 5617 && (uPendingDbgXcpt & VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS))5617 && (uPendingDbgXcpts & VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS)) 5618 5618 IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestPndDbgXcptBsNoTf); 5619 5619 } 5620 5620 5621 5621 /* We don't support RTM (Real-time Transactional Memory) yet. */ 5622 if (!(uPendingDbgXcpt & VMX_VMCS_GUEST_PENDING_DEBUG_RTM))5622 if (!(uPendingDbgXcpts & VMX_VMCS_GUEST_PENDING_DEBUG_RTM)) 5623 5623 { /* likely */ } 5624 5624 else … … 6860 6860 Assert(pVmcs); 6861 6861 6862 bool fPendingDbgXcpt = RT_BOOL(pVmcs->u64GuestPendingDbgXcpt .u & ( VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS6863 | VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_EN_BP));6862 bool fPendingDbgXcpt = RT_BOOL(pVmcs->u64GuestPendingDbgXcpts.u & ( VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_BS 6863 | VMX_VMCS_GUEST_PENDING_DEBUG_XCPT_EN_BP)); 6864 6864 if (fPendingDbgXcpt) 6865 6865 { -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r80364 r80387 9985 9985 * Currently just copy whatever the nested-guest provides us. 9986 9986 */ 9987 uint64_t const uPendingDbgXcpt = pVmcsNstGst->u64GuestPendingDbgXcpt.u;9987 uint64_t const uPendingDbgXcpts = pVmcsNstGst->u64GuestPendingDbgXcpts.u; 9988 9988 9989 9989 /* … … 10120 10120 if (u32ProcCtls2 & VMX_PROC_CTLS2_VIRT_APIC_ACCESS) 10121 10121 rc |= VMXWriteVmcs64(VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL, HCPhysApicAccess); 10122 rc |= VMXWriteVmcsNw(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, uPendingDbgXcpt );10122 rc |= VMXWriteVmcsNw(VMX_VMCS_GUEST_PENDING_DEBUG_XCPTS, uPendingDbgXcpts); 10123 10123 AssertRC(rc); 10124 10124 -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r80364 r80387 504 504 SSMFIELD_ENTRY( VMXVVMCS, u64GuestRip), 505 505 SSMFIELD_ENTRY( VMXVVMCS, u64GuestRFlags), 506 SSMFIELD_ENTRY( VMXVVMCS, u64GuestPendingDbgXcpt ),506 SSMFIELD_ENTRY( VMXVVMCS, u64GuestPendingDbgXcpts), 507 507 SSMFIELD_ENTRY( VMXVVMCS, u64GuestSysenterEsp), 508 508 SSMFIELD_ENTRY( VMXVVMCS, u64GuestSysenterEip), … … 3859 3859 pHlp->pfnPrintf(pHlp, " %srip = %#RX64\n", pszPrefix, pVmcs->u64GuestRip.u); 3860 3860 pHlp->pfnPrintf(pHlp, " %srflags = %#RX64 %31s\n",pszPrefix, pVmcs->u64GuestRFlags.u, szEFlags); 3861 pHlp->pfnPrintf(pHlp, " %sPending debug xcpts = %#RX64\n", pszPrefix, pVmcs->u64GuestPendingDbgXcpt .u);3861 pHlp->pfnPrintf(pHlp, " %sPending debug xcpts = %#RX64\n", pszPrefix, pVmcs->u64GuestPendingDbgXcpts.u); 3862 3862 pHlp->pfnPrintf(pHlp, " %sSysEnter ESP = %#RX64\n", pszPrefix, pVmcs->u64GuestSysenterEsp.u); 3863 3863 pHlp->pfnPrintf(pHlp, " %sSysEnter EIP = %#RX64\n", pszPrefix, pVmcs->u64GuestSysenterEip.u);
Note:
See TracChangeset
for help on using the changeset viewer.