VirtualBox

Changeset 96746 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Sep 15, 2022 4:45:53 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153633
Message:

VMM/HMVMXR0: Nested VMX: bugref:10092 Fix VMXR0GetExitAuxInfo.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r96407 r96746  
    48584858    {
    48594859        AssertCompile(sizeof(fWhat) == sizeof(pVmxTransient->fVmcsFieldsRead));
    4860         fWhat &= ~pVmxTransient->fVmcsFieldsRead;
    48614860
    48624861        /* The exit reason is always available. */
     
    48664865        {
    48674866            vmxHCReadExitQualVmcs(pVCpu, pVmxTransient);
     4867            pVmxExitAux->u64Qual = pVmxTransient->uExitQual;
     4868#ifdef VBOX_STRICT
    48684869            fWhat &= ~HMVMX_READ_EXIT_QUALIFICATION;
    4869             pVmxExitAux->u64Qual = pVmxTransient->uExitQual;
     4870#endif
    48704871        }
    48714872
     
    48734874        {
    48744875            vmxHCReadIdtVectoringInfoVmcs(pVCpu, pVmxTransient);
     4876            pVmxExitAux->uIdtVectoringInfo = pVmxTransient->uIdtVectoringInfo;
     4877#ifdef VBOX_STRICT
    48754878            fWhat &= ~HMVMX_READ_IDT_VECTORING_INFO;
    4876             pVmxExitAux->uIdtVectoringInfo = pVmxTransient->uIdtVectoringInfo;
     4879#endif
    48774880        }
    48784881
     
    48804883        {
    48814884            vmxHCReadIdtVectoringErrorCodeVmcs(pVCpu, pVmxTransient);
     4885            pVmxExitAux->uIdtVectoringErrCode = pVmxTransient->uIdtVectoringErrorCode;
     4886#ifdef VBOX_STRICT
    48824887            fWhat &= ~HMVMX_READ_IDT_VECTORING_ERROR_CODE;
    4883             pVmxExitAux->uIdtVectoringErrCode = pVmxTransient->uIdtVectoringErrorCode;
     4888#endif
    48844889        }
    48854890
     
    48874892        {
    48884893            vmxHCReadExitInstrLenVmcs(pVCpu, pVmxTransient);
     4894            pVmxExitAux->cbInstr = pVmxTransient->cbExitInstr;
     4895#ifdef VBOX_STRICT
    48894896            fWhat &= ~HMVMX_READ_EXIT_INSTR_LEN;
    4890             pVmxExitAux->cbInstr = pVmxTransient->cbExitInstr;
     4897#endif
    48914898        }
    48924899
     
    48944901        {
    48954902            vmxHCReadExitIntInfoVmcs(pVCpu, pVmxTransient);
     4903            pVmxExitAux->uExitIntInfo = pVmxTransient->uExitIntInfo;
     4904#ifdef VBOX_STRICT
    48964905            fWhat &= ~HMVMX_READ_EXIT_INTERRUPTION_INFO;
    4897             pVmxExitAux->uExitIntInfo = pVmxTransient->uExitIntInfo;
     4906#endif
    48984907        }
    48994908
     
    49014910        {
    49024911            vmxHCReadExitIntErrorCodeVmcs(pVCpu, pVmxTransient);
     4912            pVmxExitAux->uExitIntErrCode = pVmxTransient->uExitIntErrorCode;
     4913#ifdef VBOX_STRICT
    49034914            fWhat &= ~HMVMX_READ_EXIT_INTERRUPTION_ERROR_CODE;
    4904             pVmxExitAux->uExitIntErrCode = pVmxTransient->uExitIntErrorCode;
     4915#endif
    49054916        }
    49064917
     
    49084919        {
    49094920            vmxHCReadExitInstrInfoVmcs(pVCpu, pVmxTransient);
     4921            pVmxExitAux->InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
     4922#ifdef VBOX_STRICT
    49104923            fWhat &= ~HMVMX_READ_EXIT_INSTR_INFO;
    4911             pVmxExitAux->InstrInfo.u = pVmxTransient->ExitInstrInfo.u;
     4924#endif
    49124925        }
    49134926
     
    49154928        {
    49164929            vmxHCReadGuestLinearAddrVmcs(pVCpu, pVmxTransient);
     4930            pVmxExitAux->u64GuestLinearAddr = pVmxTransient->uGuestLinearAddr;
     4931#ifdef VBOX_STRICT
    49174932            fWhat &= ~HMVMX_READ_GUEST_LINEAR_ADDR;
    4918             pVmxExitAux->u64GuestLinearAddr = pVmxTransient->uGuestLinearAddr;
     4933#endif
    49194934        }
    49204935
     
    49224937        {
    49234938            vmxHCReadGuestPhysicalAddrVmcs(pVCpu, pVmxTransient);
     4939            pVmxExitAux->u64GuestPhysAddr = pVmxTransient->uGuestPhysicalAddr;
     4940#ifdef VBOX_STRICT
    49244941            fWhat &= ~HMVMX_READ_GUEST_PHYSICAL_ADDR;
    4925             pVmxExitAux->u64GuestPhysAddr = pVmxTransient->uGuestPhysicalAddr;
     4942#endif
    49264943        }
    49274944
    49284945        if (fWhat & HMVMX_READ_GUEST_PENDING_DBG_XCPTS)
    49294946        {
    4930             fWhat &= ~HMVMX_READ_GUEST_PENDING_DBG_XCPTS;
    49314947#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    49324948            vmxHCReadGuestPendingDbgXctps(pVCpu, pVmxTransient);
     
    49344950#else
    49354951            pVmxExitAux->u64GuestPendingDbgXcpts = 0;
     4952#endif
     4953#ifdef VBOX_STRICT
     4954            fWhat &= ~HMVMX_READ_GUEST_PENDING_DBG_XCPTS;
    49364955#endif
    49374956        }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette