VirtualBox

Changeset 73045 in vbox


Ignore:
Timestamp:
Jul 11, 2018 2:39:09 AM (6 years ago)
Author:
vboxsync
Message:

VMM/HMSVMR0: bugref:9204 Fix invd.

File:
1 edited

Legend:

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

    r73044 r73045  
    61656165    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pSvmTransient);
    61666166
    6167     hmR0SvmAdvanceRipHwAssist(pVCpu, 2);
    6168     int rc = VINF_SUCCESS;
    6169     HMSVM_CHECK_SINGLE_STEP(pVCpu, rc);
    6170     return rc;
     6167    VBOXSTRICTRC rcStrict;
     6168    bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu);
     6169    if (fSupportsNextRipSave)
     6170    {
     6171        HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK);
     6172        uint8_t const cbInstr = hmR0SvmGetInstrLength(pVCpu);
     6173        rcStrict = IEMExecDecodedInvd(pVCpu, cbInstr);
     6174    }
     6175    else
     6176    {
     6177        HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK);
     6178        rcStrict = IEMExecOne(pVCpu);
     6179    }
     6180
     6181    if (rcStrict == VINF_IEM_RAISED_XCPT)
     6182    {
     6183        rcStrict = VINF_SUCCESS;
     6184        ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_RAISED_XCPT_MASK);
     6185    }
     6186    HMSVM_CHECK_SINGLE_STEP(pVCpu, rcStrict);
     6187    return VBOXSTRICTRC_TODO(rcStrict);
    61716188}
    61726189
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