Changeset 79717 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
- Timestamp:
- Jul 12, 2019 6:19:50 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
r79639 r79717 159 159 Log(("VM-exit failed! uExitReason=%u enmDiag=%u (%s) -> %s\n", (a_uExitReason), (a_VmxDiag), \ 160 160 HMGetVmxDiagDesc(a_VmxDiag), (a_pszFailure))); \ 161 (a_pVCpu)->cpum.GstCtx.hwvirt.vmx.enmDiag = (a_VmxDiag); \ 161 (a_pVCpu)->cpum.GstCtx.hwvirt.vmx.enmDiag = (a_VmxDiag); \ 162 (a_pVCpu)->cpum.GstCtx.hwvirt.vmx.uDiagAux = (a_uExitReason); \ 162 163 return VERR_VMX_VMEXIT_FAILED; \ 163 164 } while (0) … … 7540 7541 { 7541 7542 Log(("vmread: VMCS field %#RX64 invalid -> VMFail\n", u64VmcsField)); 7542 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmread_FieldInvalid; 7543 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmread_FieldInvalid; 7544 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64VmcsField; 7543 7545 iemVmxVmFail(pVCpu, VMXINSTRERR_VMREAD_INVALID_COMPONENT); 7544 7546 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7647 7649 7648 7650 Log(("vmread/mem: Failed to write to memory operand at %#RGv, rc=%Rrc\n", GCPtrDst, VBOXSTRICTRC_VAL(rcStrict))); 7649 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmread_PtrMap; 7651 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmread_PtrMap; 7652 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrDst; 7650 7653 return rcStrict; 7651 7654 } … … 7782 7785 { 7783 7786 Log(("vmwrite: Failed to read value from memory operand at %#RGv, rc=%Rrc\n", GCPtrVal, VBOXSTRICTRC_VAL(rcStrict))); 7784 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_PtrMap; 7787 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_PtrMap; 7788 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrVal; 7785 7789 return rcStrict; 7786 7790 } … … 7795 7799 { 7796 7800 Log(("vmwrite: VMCS field %#RX64 invalid -> VMFail\n", u64VmcsField)); 7797 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_FieldInvalid; 7801 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_FieldInvalid; 7802 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64VmcsField; 7798 7803 iemVmxVmFail(pVCpu, VMXINSTRERR_VMWRITE_INVALID_COMPONENT); 7799 7804 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7809 7814 { 7810 7815 Log(("vmwrite: Write to read-only VMCS component %#RX64 -> VMFail\n", u64VmcsField)); 7811 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_FieldRo; 7816 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_FieldRo; 7817 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64VmcsField; 7812 7818 iemVmxVmFail(pVCpu, VMXINSTRERR_VMWRITE_RO_COMPONENT); 7813 7819 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7879 7885 { 7880 7886 Log(("vmclear: Failed to read VMCS physaddr from %#RGv, rc=%Rrc\n", GCPtrVmcs, VBOXSTRICTRC_VAL(rcStrict))); 7881 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrMap; 7887 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrMap; 7888 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrVmcs; 7882 7889 return rcStrict; 7883 7890 } … … 7889 7896 { 7890 7897 Log(("vmclear: VMCS pointer not page-aligned -> VMFail()\n")); 7891 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrAlign; 7898 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrAlign; 7899 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 7892 7900 iemVmxVmFail(pVCpu, VMXINSTRERR_VMCLEAR_INVALID_PHYSADDR); 7893 7901 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7901 7909 { 7902 7910 Log(("vmclear: VMCS pointer extends beyond physical-address width -> VMFail()\n")); 7903 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrWidth; 7911 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrWidth; 7912 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 7904 7913 iemVmxVmFail(pVCpu, VMXINSTRERR_VMCLEAR_INVALID_PHYSADDR); 7905 7914 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7913 7922 { 7914 7923 Log(("vmclear: VMCS pointer cannot be identical to VMXON region pointer -> VMFail()\n")); 7915 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrVmxon; 7924 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrVmxon; 7925 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 7916 7926 iemVmxVmFail(pVCpu, VMXINSTRERR_VMCLEAR_VMXON_PTR); 7917 7927 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 7926 7936 { 7927 7937 Log(("vmclear: VMCS not normal memory -> VMFail()\n")); 7928 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrAbnormal; 7938 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_PtrAbnormal; 7939 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 7929 7940 iemVmxVmFail(pVCpu, VMXINSTRERR_VMCLEAR_INVALID_PHYSADDR); 7930 7941 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8010 8021 8011 8022 Log(("vmptrst: Failed to store VMCS pointer to memory at destination operand %#Rrc\n", VBOXSTRICTRC_VAL(rcStrict))); 8012 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrst_PtrMap; 8023 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrst_PtrMap; 8024 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrVmcs; 8013 8025 return rcStrict; 8014 8026 } … … 8058 8070 { 8059 8071 Log(("vmptrld: Failed to read VMCS physaddr from %#RGv, rc=%Rrc\n", GCPtrVmcs, VBOXSTRICTRC_VAL(rcStrict))); 8060 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrMap; 8072 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrMap; 8073 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrVmcs; 8061 8074 return rcStrict; 8062 8075 } … … 8068 8081 { 8069 8082 Log(("vmptrld: VMCS pointer not page-aligned -> VMFail()\n")); 8070 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrAlign; 8083 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrAlign; 8084 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8071 8085 iemVmxVmFail(pVCpu, VMXINSTRERR_VMPTRLD_INVALID_PHYSADDR); 8072 8086 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8080 8094 { 8081 8095 Log(("vmptrld: VMCS pointer extends beyond physical-address width -> VMFail()\n")); 8082 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrWidth; 8096 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrWidth; 8097 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8083 8098 iemVmxVmFail(pVCpu, VMXINSTRERR_VMPTRLD_INVALID_PHYSADDR); 8084 8099 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8092 8107 { 8093 8108 Log(("vmptrld: VMCS pointer cannot be identical to VMXON region pointer -> VMFail()\n")); 8094 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrVmxon; 8109 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrVmxon; 8110 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8095 8111 iemVmxVmFail(pVCpu, VMXINSTRERR_VMPTRLD_VMXON_PTR); 8096 8112 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8105 8121 { 8106 8122 Log(("vmptrld: VMCS not normal memory -> VMFail()\n")); 8107 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrAbnormal; 8123 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrAbnormal; 8124 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8108 8125 iemVmxVmFail(pVCpu, VMXINSTRERR_VMPTRLD_INVALID_PHYSADDR); 8109 8126 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8119 8136 { 8120 8137 Log(("vmptrld: Failed to read revision identifier from VMCS at %#RGp, rc=%Rrc\n", GCPhysVmcs, rc)); 8121 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_RevPtrReadPhys; 8138 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_RevPtrReadPhys; 8139 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8122 8140 return rc; 8123 8141 } … … 8174 8192 { 8175 8193 Log(("vmptrld: Failed to read VMCS at %#RGp, rc=%Rrc\n", GCPhysVmcs, rc)); 8176 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrReadPhys; 8194 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_PtrReadPhys; 8195 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmcs; 8177 8196 return rc; 8178 8197 } … … 8246 8265 { 8247 8266 Log(("invvpid: invalid/unsupported invvpid type %#x -> VMFail\n", u64InvvpidType)); 8248 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_TypeInvalid; 8267 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_TypeInvalid; 8268 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64InvvpidType; 8249 8269 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8250 8270 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8265 8285 { 8266 8286 Log(("invvpid: reserved bits set in invvpid descriptor %#RX64 -> #GP(0)\n", uDesc.s.Lo)); 8267 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_DescRsvd; 8287 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_DescRsvd; 8288 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = uDesc.s.Lo; 8268 8289 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8269 8290 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8291 8312 { 8292 8313 Log(("invvpid: invalidation address %#RGP is not canonical -> VMFail\n", GCPtrInvAddr)); 8293 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type0InvalidAddr; 8314 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type0InvalidAddr; 8315 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrInvAddr; 8294 8316 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8295 8317 } … … 8298 8320 { 8299 8321 Log(("invvpid: invalid VPID %#x for invalidation type %u -> VMFail\n", uVpid, u64InvvpidType)); 8300 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type0InvalidVpid; 8322 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type0InvalidVpid; 8323 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64InvvpidType; 8301 8324 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8302 8325 } … … 8316 8339 { 8317 8340 Log(("invvpid: invalid VPID %#x for invalidation type %u -> VMFail\n", uVpid, u64InvvpidType)); 8318 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type1InvalidVpid; 8341 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type1InvalidVpid; 8342 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = u64InvvpidType; 8319 8343 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8320 8344 } … … 8343 8367 { 8344 8368 Log(("invvpid: invalid VPID %#x for invalidation type %u -> VMFail\n", uVpid, u64InvvpidType)); 8345 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type3InvalidVpid; 8369 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Invvpid_Type3InvalidVpid; 8370 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = uVpid; 8346 8371 iemVmxVmFail(pVCpu, VMXINSTRERR_INVEPT_INVVPID_INVALID_OPERAND); 8347 8372 } … … 8465 8490 { 8466 8491 Log(("vmxon: Failed to read VMXON region physaddr from %#RGv, rc=%Rrc\n", GCPtrVmxon, VBOXSTRICTRC_VAL(rcStrict))); 8467 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrMap; 8492 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrMap; 8493 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPtrVmxon; 8468 8494 return rcStrict; 8469 8495 } … … 8475 8501 { 8476 8502 Log(("vmxon: VMXON region pointer not page-aligned -> VMFailInvalid\n")); 8477 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrAlign; 8503 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrAlign; 8504 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmxon; 8478 8505 iemVmxVmFailInvalid(pVCpu); 8479 8506 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8487 8514 { 8488 8515 Log(("vmxon: VMXON region pointer extends beyond physical-address width -> VMFailInvalid\n")); 8489 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrWidth; 8516 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrWidth; 8517 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmxon; 8490 8518 iemVmxVmFailInvalid(pVCpu); 8491 8519 iemRegAddToRipAndClearRF(pVCpu, cbInstr); … … 8500 8528 { 8501 8529 Log(("vmxon: VMXON region not normal memory -> VMFailInvalid\n")); 8502 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrAbnormal; 8530 pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_PtrAbnormal; 8531 pVCpu->cpum.GstCtx.hwvirt.vmx.uDiagAux = GCPhysVmxon; 8503 8532 iemVmxVmFailInvalid(pVCpu); 8504 8533 iemRegAddToRipAndClearRF(pVCpu, cbInstr);
Note:
See TracChangeset
for help on using the changeset viewer.