VirtualBox

Changeset 73048 in vbox


Ignore:
Timestamp:
Jul 11, 2018 2:45:02 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123608
Message:

VMM/HMSVMR0: bugref:9204 Fix rdpmc.

File:
1 edited

Legend:

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

    r73047 r73048  
    63156315{
    63166316    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pSvmTransient);
    6317     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_SS);
    6318 
    6319     PCPUMCTX pCtx = &pVCpu->cpum.GstCtx;
    6320     int rc = EMInterpretRdpmc(pVCpu->CTX_SUFF(pVM), pVCpu, CPUMCTX2CORE(pCtx));
    6321     if (RT_LIKELY(rc == VINF_SUCCESS))
    6322     {
    6323         hmR0SvmAdvanceRipHwAssist(pVCpu, 2);
    6324         HMSVM_CHECK_SINGLE_STEP(pVCpu, rc);
     6317
     6318    VBOXSTRICTRC rcStrict;
     6319    bool const fSupportsNextRipSave = hmR0SvmSupportsNextRipSave(pVCpu);
     6320    if (fSupportsNextRipSave)
     6321    {
     6322        HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK | CPUMCTX_EXTRN_CR4);
     6323        uint8_t const cbInstr = hmR0SvmGetInstrLength(pVCpu);
     6324        rcStrict = IEMExecDecodedRdpmc(pVCpu, cbInstr);
    63256325    }
    63266326    else
    63276327    {
    6328         AssertMsgFailed(("hmR0SvmExitRdpmc: EMInterpretRdpmc failed with %Rrc\n", rc));
    6329         rc = VERR_EM_INTERPRETER;
    6330     }
    6331     return rc;
     6328        HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK);
     6329        rcStrict = IEMExecOne(pVCpu);
     6330    }
     6331
     6332    if (rcStrict == VINF_IEM_RAISED_XCPT)
     6333    {
     6334        rcStrict = VINF_SUCCESS;
     6335        ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_RAISED_XCPT_MASK);
     6336    }
     6337    HMSVM_CHECK_SINGLE_STEP(pVCpu, rcStrict);
     6338    return VBOXSTRICTRC_TODO(rcStrict);
    63326339}
    63336340
Note: See TracChangeset for help on using the changeset viewer.

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