- Timestamp:
- Jul 11, 2013 11:34:04 AM (12 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r47076 r47090 466 466 { 467 467 AssertPtrReturnVoid(pVCpu); 468 VMXReadVmcs32(VMX_VMCS32_RO_VM_INSTR_ERROR, &pVCpu->hm.s.vmx. lasterror.u32InstrError);468 VMXReadVmcs32(VMX_VMCS32_RO_VM_INSTR_ERROR, &pVCpu->hm.s.vmx.LastError.u32InstrError); 469 469 } 470 470 pVM->hm.s.lLastError = rc; … … 4007 4007 case VERR_VMX_UNABLE_TO_START_VM: /* VMLAUNCH/VMRESUME itself failed. */ 4008 4008 { 4009 int rc = VMXReadVmcs32(VMX_VMCS32_RO_EXIT_REASON, &pVCpu->hm.s.vmx. lasterror.u32ExitReason);4010 rc |= VMXReadVmcs32(VMX_VMCS32_RO_VM_INSTR_ERROR, &pVCpu->hm.s.vmx. lasterror.u32InstrError);4009 int rc = VMXReadVmcs32(VMX_VMCS32_RO_EXIT_REASON, &pVCpu->hm.s.vmx.LastError.u32ExitReason); 4010 rc |= VMXReadVmcs32(VMX_VMCS32_RO_VM_INSTR_ERROR, &pVCpu->hm.s.vmx.LastError.u32InstrError); 4011 4011 rc |= hmR0VmxReadExitQualificationVmcs(pVCpu, pVmxTransient); 4012 4012 AssertRC(rc); 4013 4013 4014 4014 #ifdef VBOX_STRICT 4015 Log4(("uExitReason %#RX32 (VmxTransient %#RX16)\n", pVCpu->hm.s.vmx. lasterror.u32ExitReason,4015 Log4(("uExitReason %#RX32 (VmxTransient %#RX16)\n", pVCpu->hm.s.vmx.LastError.u32ExitReason, 4016 4016 pVmxTransient->uExitReason)); 4017 4017 Log4(("Exit Qualification %#RX64\n", pVmxTransient->uExitQualification)); 4018 Log4(("InstrError %#RX32\n", pVCpu->hm.s.vmx. lasterror.u32InstrError));4019 if (pVCpu->hm.s.vmx. lasterror.u32InstrError <= HMVMX_INSTR_ERROR_MAX)4020 Log4(("InstrError Desc. \"%s\"\n", g_apszVmxInstrErrors[pVCpu->hm.s.vmx. lasterror.u32InstrError]));4018 Log4(("InstrError %#RX32\n", pVCpu->hm.s.vmx.LastError.u32InstrError)); 4019 if (pVCpu->hm.s.vmx.LastError.u32InstrError <= HMVMX_INSTR_ERROR_MAX) 4020 Log4(("InstrError Desc. \"%s\"\n", g_apszVmxInstrErrors[pVCpu->hm.s.vmx.LastError.u32InstrError])); 4021 4021 else 4022 4022 Log4(("InstrError Desc. Range exceeded %u\n", HMVMX_INSTR_ERROR_MAX)); … … 6003 6003 else if (RT_UNLIKELY(rcExit == VERR_VMX_INVALID_VMCS_PTR)) 6004 6004 { 6005 VMXGetActivateVMCS(&pVCpu->hm.s.vmx. lasterror.u64VMCSPhys);6006 pVCpu->hm.s.vmx. lasterror.u32VMCSRevision = *(uint32_t *)pVCpu->hm.s.vmx.pvVmcs;6007 pVCpu->hm.s.vmx. lasterror.idEnteredCpu = pVCpu->hm.s.idEnteredCpu;6008 pVCpu->hm.s.vmx. lasterror.idCurrentCpu = RTMpCpuId();6005 VMXGetActivateVMCS(&pVCpu->hm.s.vmx.LastError.u64VMCSPhys); 6006 pVCpu->hm.s.vmx.LastError.u32VMCSRevision = *(uint32_t *)pVCpu->hm.s.vmx.pvVmcs; 6007 pVCpu->hm.s.vmx.LastError.idEnteredCpu = pVCpu->hm.s.idEnteredCpu; 6008 pVCpu->hm.s.vmx.LastError.idCurrentCpu = RTMpCpuId(); 6009 6009 return; 6010 6010 } -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r47065 r47090 171 171 172 172 /** 173 * Updates error from VMCS to HMCPU's lasterror record.173 * Updates error from VMCS to HMCPU's LastError record. 174 174 * 175 175 * @param pVM Pointer to the VM. … … 185 185 186 186 VMXReadVmcs(VMX_VMCS32_RO_VM_INSTR_ERROR, &instrError); 187 pVCpu->hm.s.vmx. lasterror.u32InstrError = instrError;187 pVCpu->hm.s.vmx.LastError.u32InstrError = instrError; 188 188 } 189 189 pVM->hm.s.lLastError = rc; … … 5033 5033 { 5034 5034 /* Try to extract more information about what might have gone wrong here. */ 5035 VMXGetActivateVMCS(&pVCpu->hm.s.vmx. lasterror.u64VMCSPhys);5036 pVCpu->hm.s.vmx. lasterror.u32VMCSRevision = *(uint32_t *)pVCpu->hm.s.vmx.pvVmcs;5037 pVCpu->hm.s.vmx. lasterror.idEnteredCpu = pVCpu->hm.s.idEnteredCpu;5038 pVCpu->hm.s.vmx. lasterror.idCurrentCpu = RTMpCpuId();5035 VMXGetActivateVMCS(&pVCpu->hm.s.vmx.LastError.u64VMCSPhys); 5036 pVCpu->hm.s.vmx.LastError.u32VMCSRevision = *(uint32_t *)pVCpu->hm.s.vmx.pvVmcs; 5037 pVCpu->hm.s.vmx.LastError.idEnteredCpu = pVCpu->hm.s.idEnteredCpu; 5038 pVCpu->hm.s.vmx.LastError.idCurrentCpu = RTMpCpuId(); 5039 5039 } 5040 5040 … … 5301 5301 Log(("Current stack %08x\n", &rc2)); 5302 5302 5303 pVCpu->hm.s.vmx. lasterror.u32InstrError = instrError;5304 pVCpu->hm.s.vmx. lasterror.u32ExitReason = exitReason;5303 pVCpu->hm.s.vmx.LastError.u32InstrError = instrError; 5304 pVCpu->hm.s.vmx.LastError.u32ExitReason = exitReason; 5305 5305 5306 5306 #ifdef VBOX_STRICT -
trunk/src/VBox/VMM/VMMR3/HM.cpp
r47089 r47090 1225 1225 LogRel(("HM: VMX setup failed with rc=%Rrc!\n", rc)); 1226 1226 for (VMCPUID i = 0; i < pVM->cCpus; i++) 1227 LogRel(("HM: CPU[%ld] Last instruction error %x\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.u32InstrError));1227 LogRel(("HM: CPU[%ld] Last instruction error %x\n", i, pVM->aCpus[i].hm.s.vmx.LastError.u32InstrError)); 1228 1228 return VMSetError(pVM, rc, RT_SRC_POS, "VT-x setup failed: %Rrc", rc); 1229 1229 } … … 2943 2943 case VERR_VMX_INVALID_VMCS_PTR: 2944 2944 LogRel(("HM: VERR_VMX_INVALID_VMCS_PTR:\n")); 2945 LogRel(("HM: CPU%d Current pointer %RGp vs %RGp\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.u64VMCSPhys, pVM->aCpus[i].hm.s.vmx.HCPhysVmcs));2946 LogRel(("HM: CPU%d Current VMCS version %x\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.u32VMCSRevision));2947 LogRel(("HM: CPU%d Entered Cpu %d\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.idEnteredCpu));2948 LogRel(("HM: CPU%d Current Cpu %d\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.idCurrentCpu));2945 LogRel(("HM: CPU%d Current pointer %RGp vs %RGp\n", i, pVM->aCpus[i].hm.s.vmx.LastError.u64VMCSPhys, pVM->aCpus[i].hm.s.vmx.HCPhysVmcs)); 2946 LogRel(("HM: CPU%d Current VMCS version %x\n", i, pVM->aCpus[i].hm.s.vmx.LastError.u32VMCSRevision)); 2947 LogRel(("HM: CPU%d Entered Cpu %d\n", i, pVM->aCpus[i].hm.s.vmx.LastError.idEnteredCpu)); 2948 LogRel(("HM: CPU%d Current Cpu %d\n", i, pVM->aCpus[i].hm.s.vmx.LastError.idCurrentCpu)); 2949 2949 break; 2950 2950 2951 2951 case VERR_VMX_UNABLE_TO_START_VM: 2952 2952 LogRel(("HM: VERR_VMX_UNABLE_TO_START_VM:\n")); 2953 LogRel(("HM: CPU%d Instruction error %#x\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.u32InstrError));2954 LogRel(("HM: CPU%d Exit reason %#x\n", i, pVM->aCpus[i].hm.s.vmx. lasterror.u32ExitReason));2955 if (pVM->aCpus[i].hm.s.vmx. lasterror.u32InstrError == VMX_ERROR_VMENTRY_INVALID_CONTROL_FIELDS)2953 LogRel(("HM: CPU%d Instruction error %#x\n", i, pVM->aCpus[i].hm.s.vmx.LastError.u32InstrError)); 2954 LogRel(("HM: CPU%d Exit reason %#x\n", i, pVM->aCpus[i].hm.s.vmx.LastError.u32ExitReason)); 2955 if (pVM->aCpus[i].hm.s.vmx.LastError.u32InstrError == VMX_ERROR_VMENTRY_INVALID_CONTROL_FIELDS) 2956 2956 { 2957 2957 LogRel(("HM: CPU%d PinCtls %#RX32\n", i, pVM->aCpus[i].hm.s.vmx.u32PinCtls)); -
trunk/src/VBox/VMM/include/HMInternal.h
r47089 r47090 661 661 RTCPUID idCurrentCpu; 662 662 uint32_t padding; 663 } lasterror;663 } LastError; 664 664 665 665 #ifdef VBOX_WITH_OLD_VTX_CODE
Note:
See TracChangeset
for help on using the changeset viewer.