VirtualBox

Changeset 73053 in vbox


Ignore:
Timestamp:
Jul 11, 2018 3:29:16 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123613
Message:

VMM/HMSVMR0: bugref:9204 Fix mov crx read.

File:
1 edited

Legend:

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

    r73052 r73053  
    65456545        if (fMovCRx)
    65466546        {
    6547             HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK);
     6547            HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK | CPUMCTX_EXTRN_CR3 | CPUMCTX_EXTRN_CR4
     6548                                            | CPUMCTX_EXTRN_APIC_TPR);
    65486549            uint8_t const cbInstr = pVmcb->ctrl.u64NextRIP - pCtx->rip;
    65496550            uint8_t const iCrReg  = pSvmTransient->u64ExitCode - SVM_EXIT_READ_CR0;
     
    65566557    }
    65576558
    6558     HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, HMSVM_CPUMCTX_EXTRN_ALL);
    6559     VBOXSTRICTRC rc2 = EMInterpretInstruction(pVCpu, CPUMCTX2CORE(pCtx), 0 /* pvFault */);
    6560     int rc = VBOXSTRICTRC_VAL(rc2);
    6561     AssertMsg(rc == VINF_SUCCESS || rc == VERR_EM_INTERPRETER || rc == VINF_PGM_CHANGE_MODE || rc == VINF_PGM_SYNC_CR3,
    6562               ("hmR0SvmExitReadCRx: EMInterpretInstruction failed rc=%Rrc\n", rc));
     6559    HMSVM_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_MUST_MASK);
     6560    VBOXSTRICTRC rcStrict = IEMExecOne(pVCpu);
     6561    AssertMsg(   rcStrict == VINF_SUCCESS
     6562              || rcStrict == VINF_PGM_CHANGE_MODE
     6563              || rcStrict == VINF_PGM_SYNC_CR3
     6564              || rcStrict == VINF_IEM_RAISED_XCPT,
     6565              ("hmR0SvmExitReadCRx: IEMExecOne failed rc=%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
    65636566    Assert((pSvmTransient->u64ExitCode - SVM_EXIT_READ_CR0) <= 15);
    6564     HMSVM_CHECK_SINGLE_STEP(pVCpu, rc);
    6565     return rc;
     6567    if (rcStrict == VINF_IEM_RAISED_XCPT)
     6568    {
     6569        rcStrict = VINF_SUCCESS;
     6570        ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_RAISED_XCPT_MASK);
     6571    }
     6572    HMSVM_CHECK_SINGLE_STEP(pVCpu, rcStrict);
     6573    return VBOXSTRICTRC_TODO(rcStrict);
    65666574}
    65676575
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