VirtualBox

Changeset 73280 in vbox for trunk


Ignore:
Timestamp:
Jul 20, 2018 7:50:17 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123887
Message:

HM,PGM: Clarify VINF_PGM_CHANGE_MODE return and update assertions. bugref:9044.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r73268 r73280  
    25492549    PGM_A20_APPLY_TO_VAR(pVCpu, GCPhysCR3);
    25502550
    2551     if (pVCpu->pgm.s.GCPhysCR3 != GCPhysCR3)
    2552     {
    2553         RTGCPHYS const GCPhysOldCR3 = pVCpu->pgm.s.GCPhysCR3;
    2554 
     2551    RTGCPHYS const GCPhysOldCR3 = pVCpu->pgm.s.GCPhysCR3;
     2552    if (GCPhysOldCR3 != GCPhysCR3)
     2553    {
    25552554        uintptr_t const idxBth = pVCpu->pgm.s.idxBothModeData;
    25562555        AssertReturn(idxBth < RT_ELEMENTS(g_aPgmBothModeData), VERR_PGM_MODE_IPE);
     
    28322831 *          VM scheduling.
    28332832 * @retval  VINF_SUCCESS if the was no change, or it was successfully dealt with.
    2834  * @retval  VINF_PGM_CHANGE_MODE if we're in RC or R0 and the mode changes.
    2835  *          (I.e. not in R3.)
     2833 * @retval  VINF_PGM_CHANGE_MODE if we're in RC the mode changes.  This will
     2834 *          NOT be returned in ring-3 or ring-0.
    28362835 * @retval  VINF_EM_SUSPEND or VINF_EM_OFF on a fatal runtime error. (R3 only)
    28372836 *
     
    28912890    PGM_INVL_VCPU_TLBS(pVCpu);
    28922891
    2893 #if defined(IN_RING3) || defined(IN_RING0)
     2892#ifndef IN_RC
    28942893    return PGMHCChangeMode(pVCpu->CTX_SUFF(pVM), pVCpu, enmGuestMode);
    28952894#else
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r73253 r73280  
    65196519    VBOXSTRICTRC rcStrict = IEMExecOne(pVCpu);
    65206520    AssertMsg(   rcStrict == VINF_SUCCESS
    6521               || rcStrict == VINF_PGM_CHANGE_MODE
    65226521              || rcStrict == VINF_PGM_SYNC_CR3
    65236522              || rcStrict == VINF_IEM_RAISED_XCPT,
     
    66236622    }
    66246623    else
    6625         Assert(rcStrict == VERR_EM_INTERPRETER || rcStrict == VINF_PGM_CHANGE_MODE || rcStrict == VINF_PGM_SYNC_CR3);
     6624        Assert(rcStrict == VERR_EM_INTERPRETER || rcStrict == VINF_PGM_SYNC_CR3);
    66266625    return VBOXSTRICTRC_TODO(rcStrict);
    66276626}
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r73274 r73280  
    1188211882 *
    1188311883 * @retval VINF_SUCCESS when guest execution can continue.
    11884  * @retval VINF_PGM_CHANGE_MODE when shadow paging mode changed, back to ring-3.
    1188511884 * @retval VINF_PGM_SYNC_CR3 CR3 sync is required, back to ring-3.
    1188611885 * @retval VERR_EM_INTERPRETER when something unexpected happened, fallback to
     
    1191111910            AssertMsg(   rcStrict == VINF_SUCCESS
    1191211911                      || rcStrict == VINF_IEM_RAISED_XCPT
    11913                       || rcStrict == VINF_PGM_CHANGE_MODE
    1191411912                      || rcStrict == VINF_PGM_SYNC_CR3, ("%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
    1191511913
     
    1203812036        case VMX_EXIT_QUAL_CRX_ACCESS_LMSW:        /* LMSW (Load Machine-Status Word into CR0) */
    1203912037        {
     12038            /* Note! LMSW cannot clear CR0.PE, so no fRealOnV86Active kludge needed here. */
    1204012039            rcStrict = IEMExecDecodedLmsw(pVCpu, pVmxTransient->cbInstr,
    1204112040                                          VMX_EXIT_QUAL_CRX_LMSW_DATA(uExitQualification));
    1204212041            AssertMsg(   rcStrict == VINF_SUCCESS
    1204312042                      || rcStrict == VINF_IEM_RAISED_XCPT
    12044                       || rcStrict == VINF_PGM_CHANGE_MODE,
    12045                       ("%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
     12043                      , ("%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
    1204612044
    1204712045            ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_GUEST_RIP | HM_CHANGED_GUEST_RFLAGS | HM_CHANGED_GUEST_CR0);
     
    1318713185              || rc == VINF_EM_HALT
    1318813186              || rc == VINF_EM_RESCHEDULE
    13189               || rc == VINF_PGM_CHANGE_MODE
    1319013187              , ("#GP Unexpected rc=%Rrc\n", rc));
    1319113188    return rc;
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